Modern Events Calendar Lite - Version 4.5.0

Version Description

Download this release

Release Info

Developer webnus
Plugin Icon 128x128 Modern Events Calendar Lite
Version 4.5.0
Comparing to
See all releases

Code changes from version 4.4.9 to 4.5.0

Files changed (151) hide show
  1. app/api/Stripe/Account.php +302 -41
  2. app/api/Stripe/AccountLink.php +20 -0
  3. app/api/Stripe/AlipayAccount.php +59 -1
  4. app/api/Stripe/ApiOperations/All.php +34 -0
  5. app/api/Stripe/ApiOperations/Create.php +28 -0
  6. app/api/Stripe/ApiOperations/Delete.php +27 -0
  7. app/api/Stripe/ApiOperations/NestedResource.php +118 -0
  8. app/api/Stripe/ApiOperations/Request.php +61 -0
  9. app/api/Stripe/ApiOperations/Retrieve.php +27 -0
  10. app/api/Stripe/ApiOperations/Update.php +46 -0
  11. app/api/Stripe/ApiRequestor.php +266 -41
  12. app/api/Stripe/ApiResource.php +40 -133
  13. app/api/Stripe/ApplePayDomain.php +7 -45
  14. app/api/Stripe/ApplicationFee.php +50 -22
  15. app/api/Stripe/ApplicationFeeRefund.php +15 -0
  16. app/api/Stripe/AttachedObject.php +0 -31
  17. app/api/Stripe/Balance.php +6 -3
  18. app/api/Stripe/BalanceTransaction.php +35 -27
  19. app/api/Stripe/BankAccount.php +87 -4
  20. app/api/Stripe/BitcoinReceiver.php +17 -54
  21. app/api/Stripe/BitcoinTransaction.php +1 -1
  22. app/api/Stripe/Capability.php +82 -0
  23. app/api/Stripe/Card.php +117 -1
  24. app/api/Stripe/Charge.php +86 -64
  25. app/api/Stripe/Checkout/Session.php +39 -0
  26. app/api/Stripe/Collection.php +27 -7
  27. app/api/Stripe/CountrySpec.php +12 -31
  28. app/api/Stripe/Coupon.php +22 -64
  29. app/api/Stripe/CreditNote.php +73 -0
  30. app/api/Stripe/Customer.php +203 -74
  31. app/api/Stripe/CustomerBalanceTransaction.php +88 -0
  32. app/api/Stripe/Discount.php +20 -0
  33. app/api/Stripe/Dispute.php +32 -38
  34. app/api/Stripe/EphemeralKey.php +40 -0
  35. app/api/Stripe/Error/Base.php +9 -0
  36. app/api/Stripe/Error/Card.php +6 -7
  37. app/api/Stripe/Error/Idempotency.php +7 -0
  38. app/api/Stripe/Error/OAuth/InvalidClient.php +10 -0
  39. app/api/Stripe/Error/OAuth/InvalidGrant.php +13 -0
  40. app/api/Stripe/Error/OAuth/InvalidRequest.php +11 -0
  41. app/api/Stripe/Error/OAuth/InvalidScope.php +10 -0
  42. app/api/Stripe/Error/OAuth/OAuthBase.php +23 -0
  43. app/api/Stripe/Error/OAuth/UnsupportedGrantType.php +11 -0
  44. app/api/Stripe/Error/OAuth/UnsupportedResponseType.php +11 -0
  45. app/api/Stripe/Error/SignatureVerification.php +20 -0
  46. app/api/Stripe/Event.php +147 -23
  47. app/api/Stripe/ExchangeRate.php +16 -0
  48. app/api/Stripe/ExternalAccount.php +0 -89
  49. app/api/Stripe/File.php +62 -0
  50. app/api/Stripe/FileLink.php +28 -0
  51. app/api/Stripe/FileUpload.php +2 -57
  52. app/api/Stripe/HttpClient/ClientInterface.php +5 -2
  53. app/api/Stripe/HttpClient/CurlClient.php +246 -65
  54. app/api/Stripe/HttpClient/data/ca-certificates.crt +421 -694
  55. app/api/Stripe/Invoice.php +137 -27
  56. app/api/Stripe/InvoiceItem.php +26 -64
  57. app/api/Stripe/InvoiceLineItem.php +32 -0
  58. app/api/Stripe/IssuerFraudRecord.php +24 -0
  59. app/api/Stripe/Issuing/Authorization.php +68 -0
  60. app/api/Stripe/Issuing/Card.php +51 -0
  61. app/api/Stripe/Issuing/CardDetails.php +21 -0
  62. app/api/Stripe/Issuing/Cardholder.php +30 -0
  63. app/api/Stripe/Issuing/Dispute.php +30 -0
  64. app/api/Stripe/Issuing/Transaction.php +35 -0
  65. app/api/Stripe/JsonSerializable.php +0 -18
  66. app/api/Stripe/LoginLink.php +17 -0
  67. app/api/Stripe/OAuth.php +93 -0
  68. app/api/Stripe/Order.php +29 -53
  69. app/api/Stripe/OrderItem.php +21 -0
  70. app/api/Stripe/OrderReturn.php +13 -20
  71. app/api/Stripe/PaymentIntent.php +106 -0
  72. app/api/Stripe/PaymentMethod.php +59 -0
  73. app/api/Stripe/Payout.php +92 -0
  74. app/api/Stripe/Person.php +107 -0
  75. app/api/Stripe/Plan.php +25 -76
  76. app/api/Stripe/Product.php +30 -61
  77. app/api/Stripe/Radar/EarlyFraudWarning.php +36 -0
  78. app/api/Stripe/Radar/ValueList.php +32 -0
  79. app/api/Stripe/Radar/ValueListItem.php +26 -0
  80. app/api/Stripe/Recipient.php +22 -67
  81. app/api/Stripe/RecipientTransfer.php +38 -0
  82. app/api/Stripe/Refund.php +30 -49
  83. app/api/Stripe/Reporting/ReportRun.php +28 -0
  84. app/api/Stripe/Reporting/ReportType.php +24 -0
  85. app/api/Stripe/RequestTelemetry.php +27 -0
  86. app/api/Stripe/Review.php +57 -0
  87. app/api/Stripe/SKU.php +21 -64
  88. app/api/Stripe/SetupIntent.php +74 -0
  89. app/api/Stripe/Sigma/ScheduledQueryRun.php +33 -0
  90. app/api/Stripe/SingletonApiResource.php +3 -1
  91. app/api/Stripe/Source.php +109 -14
  92. app/api/Stripe/SourceTransaction.php +22 -0
  93. app/api/Stripe/Stripe.php +146 -7
  94. app/api/Stripe/StripeObject.php +347 -117
  95. app/api/Stripe/Subscription.php +58 -57
  96. app/api/Stripe/SubscriptionItem.php +29 -58
  97. app/api/Stripe/SubscriptionSchedule.php +68 -0
  98. app/api/Stripe/TaxId.php +80 -0
  99. app/api/Stripe/TaxRate.php +30 -0
  100. app/api/Stripe/Terminal/ConnectionToken.php +17 -0
  101. app/api/Stripe/Terminal/Location.php +25 -0
  102. app/api/Stripe/Terminal/Reader.php +30 -0
  103. app/api/Stripe/ThreeDSecure.php +5 -22
  104. app/api/Stripe/Token.php +13 -21
  105. app/api/Stripe/Topup.php +59 -0
  106. app/api/Stripe/Transfer.php +61 -56
  107. app/api/Stripe/TransferReversal.php +9 -1
  108. app/api/Stripe/UsageRecord.php +43 -0
  109. app/api/Stripe/UsageRecordSummary.php +21 -0
  110. app/api/Stripe/Util/AutoPagingIterator.php +3 -3
  111. app/api/Stripe/Util/CaseInsensitiveArray.php +62 -0
  112. app/api/Stripe/Util/DefaultLogger.php +18 -0
  113. app/api/Stripe/Util/LoggerInterface.php +36 -0
  114. app/api/Stripe/Util/RandomGenerator.php +34 -0
  115. app/api/Stripe/Util/RequestOptions.php +34 -5
  116. app/api/Stripe/Util/Set.php +2 -2
  117. app/api/Stripe/Util/Util.php +260 -44
  118. app/api/Stripe/Webhook.php +40 -0
  119. app/api/Stripe/WebhookEndpoint.php +28 -0
  120. app/api/Stripe/WebhookSignature.php +133 -0
  121. app/features/events.php +69 -3
  122. app/features/fes.php +72 -5
  123. app/features/login.php +81 -0
  124. app/features/login/index.html +0 -0
  125. app/features/login/login.php +60 -0
  126. app/features/mec.php +16 -16
  127. app/features/mec/booking.php +197 -0
  128. app/features/mec/gateways.php +1 -117
  129. app/features/mec/meta_boxes/display_options.php +158 -36
  130. app/features/mec/notifications.php +1 -197
  131. app/features/mec/regform.php +2 -234
  132. app/features/mec/single.php +1 -1
  133. app/features/mec/support-page.php +2 -2
  134. app/features/mec/support.php +1 -1
  135. app/features/search.php +6 -1
  136. app/libraries/factory.php +8 -0
  137. app/libraries/main.php +4 -21
  138. app/libraries/render.php +1 -1
  139. app/libraries/skins.php +1 -0
  140. app/modules/booking/steps/tickets.php +1 -1
  141. app/skins/grid.php +3 -0
  142. app/skins/grid/render.php +35 -3
  143. app/skins/grid/tpl.php +6 -0
  144. app/skins/list.php +3 -0
  145. app/skins/list/render.php +35 -1
  146. app/skins/list/tpl.php +7 -1
  147. app/skins/masonry/render.php +1 -0
  148. assets/css/backend.css +407 -1
  149. assets/css/backend.min.css +1 -1
  150. assets/css/frontend.css +213 -2
  151. assets/css/frontend.min.css +1 -1
app/api/Stripe/Account.php CHANGED
@@ -7,35 +7,88 @@ namespace Stripe;
7
  *
8
  * @property string $id
9
  * @property string $object
10
- * @property mixed $business_logo
11
- * @property string $business_name
12
- * @property mixed $business_url
13
  * @property bool $charges_enabled
 
14
  * @property string $country
15
- * @property bool $debit_negative_balances
16
- * @property mixed $decline_charge_on
17
  * @property string $default_currency
18
  * @property bool $details_submitted
19
- * @property string $display_name
20
  * @property string $email
21
- * @property mixed $external_accounts
22
- * @property mixed $legal_entity
23
- * @property bool $managed
24
- * @property mixed $product_description
25
- * @property mixed $statement_descriptor
26
- * @property mixed $support_email
27
- * @property mixed $support_phone
28
- * @property string $timezone
29
  * @property mixed $tos_acceptance
30
- * @property mixed $transfer_schedule
31
- * @property bool $transfers_enabled
32
- * @property mixed $verification
33
- * @property mixed $keys
34
  *
35
  * @package Stripe
36
  */
37
  class Account extends ApiResource
38
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  public function instanceUrl()
40
  {
41
  if ($this['id'] === null) {
@@ -46,7 +99,8 @@ class Account extends ApiResource
46
  }
47
 
48
  /**
49
- * @param string|null $id
 
50
  * @param array|string|null $opts
51
  *
52
  * @return Account
@@ -64,68 +118,275 @@ class Account extends ApiResource
64
  * @param array|null $params
65
  * @param array|string|null $opts
66
  *
67
- * @return Account
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  */
69
- public static function create($params = null, $opts = null)
70
  {
71
- return self::_create($params, $opts);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  }
73
 
74
  /**
75
- * @param string $id The ID of the account to update.
76
  * @param array|null $params
77
  * @param array|string|null $options
78
  *
79
- * @return Account The updated account.
80
  */
81
- public static function update($id, $params = null, $options = null)
82
  {
83
- return self::_update($id, $params, $options);
 
 
 
 
84
  }
85
 
86
  /**
 
 
87
  * @param array|string|null $opts
88
  *
89
- * @return Account
90
  */
91
- public function save($opts = null)
92
  {
93
- return $this->_save($opts);
94
  }
95
 
96
  /**
 
 
97
  * @param array|null $params
98
  * @param array|string|null $opts
99
  *
100
- * @return Account The deleted account.
101
  */
102
- public function delete($params = null, $opts = null)
103
  {
104
- return $this->_delete($params, $opts);
105
  }
106
 
107
  /**
 
 
108
  * @param array|null $params
109
  * @param array|string|null $opts
110
  *
111
- * @return Account The rejected account.
112
  */
113
- public function reject($params = null, $opts = null)
114
  {
115
- $url = $this->instanceUrl() . '/reject';
116
- list($response, $opts) = $this->_request('post', $url, $params, $opts);
117
- $this->refreshFrom($response, $opts);
118
- return $this;
 
 
 
 
 
 
 
 
 
 
119
  }
120
 
121
  /**
 
122
  * @param array|null $params
123
  * @param array|string|null $opts
124
  *
125
- * @return Collection of Accounts
126
  */
127
- public static function all($params = null, $opts = null)
128
  {
129
- return self::_all($params, $opts);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  }
131
  }
7
  *
8
  * @property string $id
9
  * @property string $object
10
+ * @property mixed $business_profile
11
+ * @property string $business_type
12
+ * @property mixed $capabilities
13
  * @property bool $charges_enabled
14
+ * @property mixed $company
15
  * @property string $country
16
+ * @property int $created
 
17
  * @property string $default_currency
18
  * @property bool $details_submitted
 
19
  * @property string $email
20
+ * @property Collection $external_accounts
21
+ * @property mixed $individual
22
+ * @property StripeObject $metadata
23
+ * @property bool $payouts_enabled
24
+ * @property mixed $requirements
25
+ * @property mixed $settings
 
 
26
  * @property mixed $tos_acceptance
27
+ * @property string $type
 
 
 
28
  *
29
  * @package Stripe
30
  */
31
  class Account extends ApiResource
32
  {
33
+ const OBJECT_NAME = "account";
34
+
35
+ use ApiOperations\All;
36
+ use ApiOperations\Create;
37
+ use ApiOperations\Delete;
38
+ use ApiOperations\NestedResource;
39
+ use ApiOperations\Retrieve {
40
+ retrieve as protected _retrieve;
41
+ }
42
+ use ApiOperations\Update;
43
+
44
+ /**
45
+ * Possible string representations of an account's business type.
46
+ * @link https://stripe.com/docs/api/accounts/object#account_object-business_type
47
+ */
48
+ const BUSINESS_TYPE_COMPANY = 'company';
49
+ const BUSINESS_TYPE_INDIVIDUAL = 'individual';
50
+
51
+ /**
52
+ * Possible string representations of an account's capabilities.
53
+ * @link https://stripe.com/docs/api/accounts/object#account_object-capabilities
54
+ */
55
+ const CAPABILITY_CARD_PAYMENTS = 'card_payments';
56
+ const CAPABILITY_LEGACY_PAYMENTS = 'legacy_payments';
57
+ const CAPABILITY_PLATFORM_PAYMENTS = 'platform_payments';
58
+
59
+ /**
60
+ * Possible string representations of an account's capability status.
61
+ * @link https://stripe.com/docs/api/accounts/object#account_object-capabilities
62
+ */
63
+ const CAPABILITY_STATUS_ACTIVE = 'active';
64
+ const CAPABILITY_STATUS_INACTIVE = 'inactive';
65
+ const CAPABILITY_STATUS_PENDING = 'pending';
66
+
67
+ /**
68
+ * Possible string representations of an account's type.
69
+ * @link https://stripe.com/docs/api/accounts/object#account_object-type
70
+ */
71
+ const TYPE_CUSTOM = 'custom';
72
+ const TYPE_EXPRESS = 'express';
73
+ const TYPE_STANDARD = 'standard';
74
+
75
+ public static function getSavedNestedResources()
76
+ {
77
+ static $savedNestedResources = null;
78
+ if ($savedNestedResources === null) {
79
+ $savedNestedResources = new Util\Set([
80
+ 'external_account',
81
+ 'bank_account',
82
+ ]);
83
+ }
84
+ return $savedNestedResources;
85
+ }
86
+
87
+ const PATH_CAPABILITIES = '/capabilities';
88
+ const PATH_EXTERNAL_ACCOUNTS = '/external_accounts';
89
+ const PATH_LOGIN_LINKS = '/login_links';
90
+ const PATH_PERSONS = '/persons';
91
+
92
  public function instanceUrl()
93
  {
94
  if ($this['id'] === null) {
99
  }
100
 
101
  /**
102
+ * @param array|string|null $id The ID of the account to retrieve, or an
103
+ * options array containing an `id` key.
104
  * @param array|string|null $opts
105
  *
106
  * @return Account
118
  * @param array|null $params
119
  * @param array|string|null $opts
120
  *
121
+ * @return Account The rejected account.
122
+ */
123
+ public function reject($params = null, $opts = null)
124
+ {
125
+ $url = $this->instanceUrl() . '/reject';
126
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
127
+ $this->refreshFrom($response, $opts);
128
+ return $this;
129
+ }
130
+
131
+ /**
132
+ * @param array|null $clientId
133
+ * @param array|string|null $opts
134
+ *
135
+ * @return StripeObject Object containing the response from the API.
136
+ */
137
+ public function deauthorize($clientId = null, $opts = null)
138
+ {
139
+ $params = [
140
+ 'client_id' => $clientId,
141
+ 'stripe_user_id' => $this->id,
142
+ ];
143
+ return OAuth::deauthorize($params, $opts);
144
+ }
145
+
146
+ /*
147
+ * Capabilities methods
148
+ * We can not add the capabilities() method today as the Account object already has a
149
+ * capabilities property which is a hash and not the sub-list of capabilities.
150
+ */
151
+
152
+
153
+ /**
154
+ * @param string $id The ID of the account to which the capability belongs.
155
+ * @param string $capabilityId The ID of the capability to retrieve.
156
+ * @param array|null $params
157
+ * @param array|string|null $opts
158
+ *
159
+ * @return Capability
160
+ */
161
+ public static function retrieveCapability($id, $capabilityId, $params = null, $opts = null)
162
+ {
163
+ return self::_retrieveNestedResource($id, static::PATH_CAPABILITIES, $capabilityId, $params, $opts);
164
+ }
165
+
166
+ /**
167
+ * @param string $id The ID of the account to which the capability belongs.
168
+ * @param string $capabilityId The ID of the capability to update.
169
+ * @param array|null $params
170
+ * @param array|string|null $opts
171
+ *
172
+ * @return Capability
173
  */
174
+ public static function updateCapability($id, $capabilityId, $params = null, $opts = null)
175
  {
176
+ return self::_updateNestedResource($id, static::PATH_CAPABILITIES, $capabilityId, $params, $opts);
177
+ }
178
+
179
+ /**
180
+ * @param string $id The ID of the account on which to retrieve the capabilities.
181
+ * @param array|null $params
182
+ * @param array|string|null $opts
183
+ *
184
+ * @return Collection The list of capabilities.
185
+ */
186
+ public static function allCapabilities($id, $params = null, $opts = null)
187
+ {
188
+ return self::_allNestedResources($id, static::PATH_CAPABILITIES, $params, $opts);
189
+ }
190
+
191
+ /**
192
+ * @param string $id The ID of the account on which to create the external account.
193
+ * @param array|null $params
194
+ * @param array|string|null $opts
195
+ *
196
+ * @return BankAccount|Card
197
+ */
198
+ public static function createExternalAccount($id, $params = null, $opts = null)
199
+ {
200
+ return self::_createNestedResource($id, static::PATH_EXTERNAL_ACCOUNTS, $params, $opts);
201
+ }
202
+
203
+ /**
204
+ * @param string $id The ID of the account to which the external account belongs.
205
+ * @param string $externalAccountId The ID of the external account to retrieve.
206
+ * @param array|null $params
207
+ * @param array|string|null $opts
208
+ *
209
+ * @return BankAccount|Card
210
+ */
211
+ public static function retrieveExternalAccount($id, $externalAccountId, $params = null, $opts = null)
212
+ {
213
+ return self::_retrieveNestedResource($id, static::PATH_EXTERNAL_ACCOUNTS, $externalAccountId, $params, $opts);
214
+ }
215
+
216
+ /**
217
+ * @param string $id The ID of the account to which the external account belongs.
218
+ * @param string $externalAccountId The ID of the external account to update.
219
+ * @param array|null $params
220
+ * @param array|string|null $opts
221
+ *
222
+ * @return BankAccount|Card
223
+ */
224
+ public static function updateExternalAccount($id, $externalAccountId, $params = null, $opts = null)
225
+ {
226
+ return self::_updateNestedResource($id, static::PATH_EXTERNAL_ACCOUNTS, $externalAccountId, $params, $opts);
227
+ }
228
+
229
+ /**
230
+ * @param string $id The ID of the account to which the external account belongs.
231
+ * @param string $externalAccountId The ID of the external account to delete.
232
+ * @param array|null $params
233
+ * @param array|string|null $opts
234
+ *
235
+ * @return BankAccount|Card
236
+ */
237
+ public static function deleteExternalAccount($id, $externalAccountId, $params = null, $opts = null)
238
+ {
239
+ return self::_deleteNestedResource($id, static::PATH_EXTERNAL_ACCOUNTS, $externalAccountId, $params, $opts);
240
+ }
241
+
242
+ /**
243
+ * @param string $id The ID of the account on which to retrieve the external accounts.
244
+ * @param array|null $params
245
+ * @param array|string|null $opts
246
+ *
247
+ * @return Collection The list of external accounts (BankAccount or Card).
248
+ */
249
+ public static function allExternalAccounts($id, $params = null, $opts = null)
250
+ {
251
+ return self::_allNestedResources($id, static::PATH_EXTERNAL_ACCOUNTS, $params, $opts);
252
+ }
253
+
254
+ /**
255
+ * @param string $id The ID of the account on which to create the login link.
256
+ * @param array|null $params
257
+ * @param array|string|null $opts
258
+ *
259
+ * @return LoginLink
260
+ */
261
+ public static function createLoginLink($id, $params = null, $opts = null)
262
+ {
263
+ return self::_createNestedResource($id, static::PATH_LOGIN_LINKS, $params, $opts);
264
  }
265
 
266
  /**
 
267
  * @param array|null $params
268
  * @param array|string|null $options
269
  *
270
+ * @return Collection The list of persons.
271
  */
272
+ public function persons($params = null, $options = null)
273
  {
274
+ $url = $this->instanceUrl() . '/persons';
275
+ list($response, $opts) = $this->_request('get', $url, $params, $options);
276
+ $obj = Util\Util::convertToStripeObject($response, $opts);
277
+ $obj->setLastResponse($response);
278
+ return $obj;
279
  }
280
 
281
  /**
282
+ * @param string $id The ID of the account on which to create the person.
283
+ * @param array|null $params
284
  * @param array|string|null $opts
285
  *
286
+ * @return Person
287
  */
288
+ public static function createPerson($id, $params = null, $opts = null)
289
  {
290
+ return self::_createNestedResource($id, static::PATH_PERSONS, $params, $opts);
291
  }
292
 
293
  /**
294
+ * @param string $id The ID of the account to which the person belongs.
295
+ * @param string $personId The ID of the person to retrieve.
296
  * @param array|null $params
297
  * @param array|string|null $opts
298
  *
299
+ * @return Person
300
  */
301
+ public static function retrievePerson($id, $personId, $params = null, $opts = null)
302
  {
303
+ return self::_retrieveNestedResource($id, static::PATH_PERSONS, $personId, $params, $opts);
304
  }
305
 
306
  /**
307
+ * @param string $id The ID of the account to which the person belongs.
308
+ * @param string $personId The ID of the person to update.
309
  * @param array|null $params
310
  * @param array|string|null $opts
311
  *
312
+ * @return Person
313
  */
314
+ public static function updatePerson($id, $personId, $params = null, $opts = null)
315
  {
316
+ return self::_updateNestedResource($id, static::PATH_PERSONS, $personId, $params, $opts);
317
+ }
318
+
319
+ /**
320
+ * @param string $id The ID of the account to which the person belongs.
321
+ * @param string $personId The ID of the person to delete.
322
+ * @param array|null $params
323
+ * @param array|string|null $opts
324
+ *
325
+ * @return Person
326
+ */
327
+ public static function deletePerson($id, $personId, $params = null, $opts = null)
328
+ {
329
+ return self::_deleteNestedResource($id, static::PATH_PERSONS, $personId, $params, $opts);
330
  }
331
 
332
  /**
333
+ * @param string $id The ID of the account on which to retrieve the persons.
334
  * @param array|null $params
335
  * @param array|string|null $opts
336
  *
337
+ * @return Collection The list of persons.
338
  */
339
+ public static function allPersons($id, $params = null, $opts = null)
340
  {
341
+ return self::_allNestedResources($id, static::PATH_PERSONS, $params, $opts);
342
+ }
343
+
344
+ public function serializeParameters($force = false)
345
+ {
346
+ $update = parent::serializeParameters($force);
347
+ if (isset($this->_values['legal_entity'])) {
348
+ $entity = $this['legal_entity'];
349
+ if (isset($entity->_values['additional_owners'])) {
350
+ $owners = $entity['additional_owners'];
351
+ $entityUpdate = isset($update['legal_entity']) ? $update['legal_entity'] : [];
352
+ $entityUpdate['additional_owners'] = $this->serializeAdditionalOwners($entity, $owners);
353
+ $update['legal_entity'] = $entityUpdate;
354
+ }
355
+ }
356
+ if (isset($this->_values['individual'])) {
357
+ $individual = $this['individual'];
358
+ if (($individual instanceof Person) && !isset($update['individual'])) {
359
+ $update['individual'] = $individual->serializeParameters($force);
360
+ }
361
+ }
362
+ return $update;
363
+ }
364
+
365
+ private function serializeAdditionalOwners($legalEntity, $additionalOwners)
366
+ {
367
+ if (isset($legalEntity->_originalValues['additional_owners'])) {
368
+ $originalValue = $legalEntity->_originalValues['additional_owners'];
369
+ } else {
370
+ $originalValue = [];
371
+ }
372
+ if (($originalValue) && (count($originalValue) > count($additionalOwners))) {
373
+ throw new \InvalidArgumentException(
374
+ "You cannot delete an item from an array, you must instead set a new array"
375
+ );
376
+ }
377
+
378
+ $updateArr = [];
379
+ foreach ($additionalOwners as $i => $v) {
380
+ $update = ($v instanceof StripeObject) ? $v->serializeParameters() : $v;
381
+
382
+ if ($update !== []) {
383
+ if (!$originalValue ||
384
+ !array_key_exists($i, $originalValue) ||
385
+ ($update != $legalEntity->serializeParamsValue($originalValue[$i], null, false, true))) {
386
+ $updateArr[$i] = $update;
387
+ }
388
+ }
389
+ }
390
+ return $updateArr;
391
  }
392
  }
app/api/Stripe/AccountLink.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class AccountLink
7
+ *
8
+ * @property string $object
9
+ * @property int $created
10
+ * @property int $expires_at
11
+ * @property string $url
12
+ *
13
+ * @package Stripe
14
+ */
15
+ class AccountLink extends ApiResource
16
+ {
17
+ const OBJECT_NAME = "account_link";
18
+
19
+ use ApiOperations\Create;
20
+ }
app/api/Stripe/AlipayAccount.php CHANGED
@@ -6,8 +6,66 @@ namespace Stripe;
6
  * Class AlipayAccount
7
  *
8
  * @package Stripe
 
 
 
9
  */
10
- class AlipayAccount extends ExternalAccount
11
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
6
  * Class AlipayAccount
7
  *
8
  * @package Stripe
9
+ *
10
+ * @deprecated Alipay accounts are deprecated. Please use the sources API instead.
11
+ * @link https://stripe.com/docs/sources/alipay
12
  */
13
+ class AlipayAccount extends ApiResource
14
  {
15
+ const OBJECT_NAME = "alipay_account";
16
+
17
+ use ApiOperations\Delete;
18
+ use ApiOperations\Update;
19
+
20
+ /**
21
+ * @return string The instance URL for this resource. It needs to be special
22
+ * cased because it doesn't fit into the standard resource pattern.
23
+ */
24
+ public function instanceUrl()
25
+ {
26
+ if ($this['customer']) {
27
+ $base = Customer::classUrl();
28
+ $parent = $this['customer'];
29
+ $path = 'sources';
30
+ } else {
31
+ $msg = "Alipay accounts cannot be accessed without a customer ID.";
32
+ throw new Error\InvalidRequest($msg, null);
33
+ }
34
+ $parentExtn = urlencode(Util\Util::utf8($parent));
35
+ $extn = urlencode(Util\Util::utf8($this['id']));
36
+ return "$base/$parentExtn/$path/$extn";
37
+ }
38
+
39
+ /**
40
+ * @param array|string $_id
41
+ * @param array|string|null $_opts
42
+ *
43
+ * @throws \Stripe\Error\InvalidRequest
44
+ *
45
+ * @deprecated Alipay accounts are deprecated. Please use the sources API instead.
46
+ * @link https://stripe.com/docs/sources/alipay
47
+ */
48
+ public static function retrieve($_id, $_opts = null)
49
+ {
50
+ $msg = "Alipay accounts cannot be accessed without a customer ID. " .
51
+ "Retrieve an Alipay account using \$customer->sources->retrieve('alipay_account_id') instead.";
52
+ throw new Error\InvalidRequest($msg, null);
53
+ }
54
 
55
+ /**
56
+ * @param string $_id
57
+ * @param array|null $_params
58
+ * @param array|string|null $_options
59
+ *
60
+ * @throws \Stripe\Error\InvalidRequest
61
+ *
62
+ * @deprecated Alipay accounts are deprecated. Please use the sources API instead.
63
+ * @link https://stripe.com/docs/sources/alipay
64
+ */
65
+ public static function update($_id, $_params = null, $_options = null)
66
+ {
67
+ $msg = "Alipay accounts cannot be accessed without a customer ID. " .
68
+ "Call save() on \$customer->sources->retrieve('alipay_account_id') instead.";
69
+ throw new Error\InvalidRequest($msg, null);
70
+ }
71
  }
app/api/Stripe/ApiOperations/All.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\ApiOperations;
4
+
5
+ /**
6
+ * Trait for listable resources. Adds a `all()` static method to the class.
7
+ *
8
+ * This trait should only be applied to classes that derive from StripeObject.
9
+ */
10
+ trait All
11
+ {
12
+ /**
13
+ * @param array|null $params
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return \Stripe\Collection of ApiResources
17
+ */
18
+ public static function all($params = null, $opts = null)
19
+ {
20
+ self::_validateParams($params);
21
+ $url = static::classUrl();
22
+
23
+ list($response, $opts) = static::_staticRequest('get', $url, $params, $opts);
24
+ $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
25
+ if (!is_a($obj, 'Stripe\\Collection')) {
26
+ $class = get_class($obj);
27
+ $message = "Expected type \"Stripe\\Collection\", got \"$class\" instead";
28
+ throw new \Stripe\Error\Api($message);
29
+ }
30
+ $obj->setLastResponse($response);
31
+ $obj->setRequestParams($params);
32
+ return $obj;
33
+ }
34
+ }
app/api/Stripe/ApiOperations/Create.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\ApiOperations;
4
+
5
+ /**
6
+ * Trait for creatable resources. Adds a `create()` static method to the class.
7
+ *
8
+ * This trait should only be applied to classes that derive from StripeObject.
9
+ */
10
+ trait Create
11
+ {
12
+ /**
13
+ * @param array|null $params
14
+ * @param array|string|null $options
15
+ *
16
+ * @return static The created resource.
17
+ */
18
+ public static function create($params = null, $options = null)
19
+ {
20
+ self::_validateParams($params);
21
+ $url = static::classUrl();
22
+
23
+ list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
24
+ $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
25
+ $obj->setLastResponse($response);
26
+ return $obj;
27
+ }
28
+ }
app/api/Stripe/ApiOperations/Delete.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\ApiOperations;
4
+
5
+ /**
6
+ * Trait for deletable resources. Adds a `delete()` method to the class.
7
+ *
8
+ * This trait should only be applied to classes that derive from StripeObject.
9
+ */
10
+ trait Delete
11
+ {
12
+ /**
13
+ * @param array|null $params
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return static The deleted resource.
17
+ */
18
+ public function delete($params = null, $opts = null)
19
+ {
20
+ self::_validateParams($params);
21
+
22
+ $url = $this->instanceUrl();
23
+ list($response, $opts) = $this->_request('delete', $url, $params, $opts);
24
+ $this->refreshFrom($response, $opts);
25
+ return $this;
26
+ }
27
+ }
app/api/Stripe/ApiOperations/NestedResource.php ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\ApiOperations;
4
+
5
+ /**
6
+ * Trait for resources that have nested resources.
7
+ *
8
+ * This trait should only be applied to classes that derive from StripeObject.
9
+ */
10
+ trait NestedResource
11
+ {
12
+ /**
13
+ * @param string $method
14
+ * @param string $url
15
+ * @param array|null $params
16
+ * @param array|string|null $options
17
+ *
18
+ * @return \Stripe\StripeObject
19
+ */
20
+ protected static function _nestedResourceOperation($method, $url, $params = null, $options = null)
21
+ {
22
+ self::_validateParams($params);
23
+
24
+ list($response, $opts) = static::_staticRequest($method, $url, $params, $options);
25
+ $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
26
+ $obj->setLastResponse($response);
27
+ return $obj;
28
+ }
29
+
30
+ /**
31
+ * @param string $id
32
+ * @param string $nestedPath
33
+ * @param string|null $nestedId
34
+ *
35
+ * @return string
36
+ */
37
+ protected static function _nestedResourceUrl($id, $nestedPath, $nestedId = null)
38
+ {
39
+ $url = static::resourceUrl($id) . $nestedPath;
40
+ if ($nestedId !== null) {
41
+ $url .= "/$nestedId";
42
+ }
43
+ return $url;
44
+ }
45
+
46
+ /**
47
+ * @param string $id
48
+ * @param string $nestedPath
49
+ * @param array|null $params
50
+ * @param array|string|null $options
51
+ *
52
+ * @return \Stripe\StripeObject
53
+ */
54
+ protected static function _createNestedResource($id, $nestedPath, $params = null, $options = null)
55
+ {
56
+ $url = static::_nestedResourceUrl($id, $nestedPath);
57
+ return self::_nestedResourceOperation('post', $url, $params, $options);
58
+ }
59
+
60
+ /**
61
+ * @param string $id
62
+ * @param string $nestedPath
63
+ * @param string|null $nestedId
64
+ * @param array|null $params
65
+ * @param array|string|null $options
66
+ *
67
+ * @return \Stripe\StripeObject
68
+ */
69
+ protected static function _retrieveNestedResource($id, $nestedPath, $nestedId, $params = null, $options = null)
70
+ {
71
+ $url = static::_nestedResourceUrl($id, $nestedPath, $nestedId);
72
+ return self::_nestedResourceOperation('get', $url, $params, $options);
73
+ }
74
+
75
+ /**
76
+ * @param string $id
77
+ * @param string $nestedPath
78
+ * @param string|null $nestedId
79
+ * @param array|null $params
80
+ * @param array|string|null $options
81
+ *
82
+ * @return \Stripe\StripeObject
83
+ */
84
+ protected static function _updateNestedResource($id, $nestedPath, $nestedId, $params = null, $options = null)
85
+ {
86
+ $url = static::_nestedResourceUrl($id, $nestedPath, $nestedId);
87
+ return self::_nestedResourceOperation('post', $url, $params, $options);
88
+ }
89
+
90
+ /**
91
+ * @param string $id
92
+ * @param string $nestedPath
93
+ * @param string|null $nestedId
94
+ * @param array|null $params
95
+ * @param array|string|null $options
96
+ *
97
+ * @return \Stripe\StripeObject
98
+ */
99
+ protected static function _deleteNestedResource($id, $nestedPath, $nestedId, $params = null, $options = null)
100
+ {
101
+ $url = static::_nestedResourceUrl($id, $nestedPath, $nestedId);
102
+ return self::_nestedResourceOperation('delete', $url, $params, $options);
103
+ }
104
+
105
+ /**
106
+ * @param string $id
107
+ * @param string $nestedPath
108
+ * @param array|null $params
109
+ * @param array|string|null $options
110
+ *
111
+ * @return \Stripe\StripeObject
112
+ */
113
+ protected static function _allNestedResources($id, $nestedPath, $params = null, $options = null)
114
+ {
115
+ $url = static::_nestedResourceUrl($id, $nestedPath);
116
+ return self::_nestedResourceOperation('get', $url, $params, $options);
117
+ }
118
+ }
app/api/Stripe/ApiOperations/Request.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\ApiOperations;
4
+
5
+ /**
6
+ * Trait for resources that need to make API requests.
7
+ *
8
+ * This trait should only be applied to classes that derive from StripeObject.
9
+ */
10
+ trait Request
11
+ {
12
+ /**
13
+ * @param array|null|mixed $params The list of parameters to validate
14
+ *
15
+ * @throws \Stripe\Error\Api if $params exists and is not an array
16
+ */
17
+ protected static function _validateParams($params = null)
18
+ {
19
+ if ($params && !is_array($params)) {
20
+ $message = "You must pass an array as the first argument to Stripe API "
21
+ . "method calls. (HINT: an example call to create a charge "
22
+ . "would be: \"Stripe\\Charge::create(['amount' => 100, "
23
+ . "'currency' => 'usd', 'source' => 'tok_1234'])\")";
24
+ throw new \Stripe\Error\Api($message);
25
+ }
26
+ }
27
+
28
+ /**
29
+ * @param string $method HTTP method ('get', 'post', etc.)
30
+ * @param string $url URL for the request
31
+ * @param array $params list of parameters for the request
32
+ * @param array|string|null $options
33
+ *
34
+ * @return array tuple containing (the JSON response, $options)
35
+ */
36
+ protected function _request($method, $url, $params = [], $options = null)
37
+ {
38
+ $opts = $this->_opts->merge($options);
39
+ list($resp, $options) = static::_staticRequest($method, $url, $params, $opts);
40
+ $this->setLastResponse($resp);
41
+ return [$resp->json, $options];
42
+ }
43
+
44
+ /**
45
+ * @param string $method HTTP method ('get', 'post', etc.)
46
+ * @param string $url URL for the request
47
+ * @param array $params list of parameters for the request
48
+ * @param array|string|null $options
49
+ *
50
+ * @return array tuple containing (the JSON response, $options)
51
+ */
52
+ protected static function _staticRequest($method, $url, $params, $options)
53
+ {
54
+ $opts = \Stripe\Util\RequestOptions::parse($options);
55
+ $baseUrl = isset($opts->apiBase) ? $opts->apiBase : static::baseUrl();
56
+ $requestor = new \Stripe\ApiRequestor($opts->apiKey, $baseUrl);
57
+ list($response, $opts->apiKey) = $requestor->request($method, $url, $params, $opts->headers);
58
+ $opts->discardNonPersistentHeaders();
59
+ return [$response, $opts];
60
+ }
61
+ }
app/api/Stripe/ApiOperations/Retrieve.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\ApiOperations;
4
+
5
+ /**
6
+ * Trait for retrievable resources. Adds a `retrieve()` static method to the
7
+ * class.
8
+ *
9
+ * This trait should only be applied to classes that derive from StripeObject.
10
+ */
11
+ trait Retrieve
12
+ {
13
+ /**
14
+ * @param array|string $id The ID of the API resource to retrieve,
15
+ * or an options array containing an `id` key.
16
+ * @param array|string|null $opts
17
+ *
18
+ * @return static
19
+ */
20
+ public static function retrieve($id, $opts = null)
21
+ {
22
+ $opts = \Stripe\Util\RequestOptions::parse($opts);
23
+ $instance = new static($id, $opts);
24
+ $instance->refresh();
25
+ return $instance;
26
+ }
27
+ }
app/api/Stripe/ApiOperations/Update.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\ApiOperations;
4
+
5
+ /**
6
+ * Trait for updatable resources. Adds an `update()` static method and a
7
+ * `save()` method to the class.
8
+ *
9
+ * This trait should only be applied to classes that derive from StripeObject.
10
+ */
11
+ trait Update
12
+ {
13
+ /**
14
+ * @param string $id The ID of the resource to update.
15
+ * @param array|null $params
16
+ * @param array|string|null $opts
17
+ *
18
+ * @return static The updated resource.
19
+ */
20
+ public static function update($id, $params = null, $opts = null)
21
+ {
22
+ self::_validateParams($params);
23
+ $url = static::resourceUrl($id);
24
+
25
+ list($response, $opts) = static::_staticRequest('post', $url, $params, $opts);
26
+ $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
27
+ $obj->setLastResponse($response);
28
+ return $obj;
29
+ }
30
+
31
+ /**
32
+ * @param array|string|null $opts
33
+ *
34
+ * @return static The saved resource.
35
+ */
36
+ public function save($opts = null)
37
+ {
38
+ $params = $this->serializeParameters();
39
+ if (count($params) > 0) {
40
+ $url = $this->instanceUrl();
41
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
42
+ $this->refreshFrom($response, $opts);
43
+ }
44
+ return $this;
45
+ }
46
+ }
app/api/Stripe/ApiRequestor.php CHANGED
@@ -9,12 +9,32 @@ namespace Stripe;
9
  */
10
  class ApiRequestor
11
  {
 
 
 
12
  private $_apiKey;
13
 
 
 
 
14
  private $_apiBase;
15
 
 
 
 
16
  private static $_httpClient;
17
 
 
 
 
 
 
 
 
 
 
 
 
18
  public function __construct($apiKey = null, $apiBase = null)
19
  {
20
  $this->_apiKey = $apiKey;
@@ -24,6 +44,37 @@ class ApiRequestor
24
  $this->_apiBase = $apiBase;
25
  }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  private static function _encodeObjects($d)
28
  {
29
  if ($d instanceof ApiResource) {
@@ -33,7 +84,7 @@ class ApiRequestor
33
  } elseif ($d === false) {
34
  return 'false';
35
  } elseif (is_array($d)) {
36
- $res = array();
37
  foreach ($d as $k => $v) {
38
  $res[$k] = self::_encodeObjects($v);
39
  }
@@ -44,27 +95,37 @@ class ApiRequestor
44
  }
45
 
46
  /**
47
- * @param string $method
48
- * @param string $url
49
  * @param array|null $params
50
  * @param array|null $headers
51
  *
52
  * @return array An array whose first element is an API response and second
53
  * element is the API key used to make the request.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  */
55
  public function request($method, $url, $params = null, $headers = null)
56
  {
57
- if (!$params) {
58
- $params = array();
59
- }
60
- if (!$headers) {
61
- $headers = array();
62
- }
63
  list($rbody, $rcode, $rheaders, $myApiKey) =
64
  $this->_requestRaw($method, $url, $params, $headers);
65
  $json = $this->_interpretResponse($rbody, $rcode, $rheaders);
66
  $resp = new ApiResponse($rbody, $rcode, $rheaders, $json);
67
- return array($resp, $myApiKey);
68
  }
69
 
70
  /**
@@ -80,11 +141,21 @@ class ApiRequestor
80
  * permissions.
81
  * @throws Error\Card if the error is the error code is 402 (payment
82
  * required)
 
 
 
 
 
 
 
 
 
 
83
  * @throws Error\RateLimit if the error is caused by too many requests
84
  * hitting the API.
85
  * @throws Error\Api otherwise.
86
  */
87
- public function handleApiError($rbody, $rcode, $rheaders, $resp)
88
  {
89
  if (!is_array($resp) || !isset($resp['error'])) {
90
  $msg = "Invalid response object from API: $rbody "
@@ -92,35 +163,104 @@ class ApiRequestor
92
  throw new Error\Api($msg, $rcode, $rbody, $resp, $rheaders);
93
  }
94
 
95
- $error = $resp['error'];
96
- $msg = isset($error['message']) ? $error['message'] : null;
97
- $param = isset($error['param']) ? $error['param'] : null;
98
- $code = isset($error['code']) ? $error['code'] : null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
 
100
  switch ($rcode) {
101
  case 400:
102
  // 'rate_limit' code is deprecated, but left here for backwards compatibility
103
  // for API versions earlier than 2015-09-08
104
  if ($code == 'rate_limit') {
105
- throw new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders);
 
 
 
106
  }
107
 
108
- // intentional fall-through
109
  case 404:
110
- throw new Error\InvalidRequest($msg, $param, $rcode, $rbody, $resp, $rheaders);
111
  case 401:
112
- throw new Error\Authentication($msg, $rcode, $rbody, $resp, $rheaders);
113
  case 402:
114
- throw new Error\Card($msg, $param, $code, $rcode, $rbody, $resp, $rheaders);
115
  case 403:
116
- throw new Error\Permission($msg, $rcode, $rbody, $resp, $rheaders);
117
  case 429:
118
- throw new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders);
119
  default:
120
- throw new Error\Api($msg, $rcode, $rbody, $resp, $rheaders);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  }
 
 
122
  }
123
 
 
 
 
 
 
 
 
124
  private static function _formatAppInfo($appInfo)
125
  {
126
  if ($appInfo !== null) {
@@ -137,38 +277,56 @@ class ApiRequestor
137
  }
138
  }
139
 
140
- private static function _defaultHeaders($apiKey)
 
 
 
 
 
 
 
 
141
  {
142
- $appInfo = Stripe::getAppInfo();
143
-
144
  $uaString = 'Stripe/v1 PhpBindings/' . Stripe::VERSION;
145
 
146
  $langVersion = phpversion();
147
  $uname = php_uname();
148
- $curlVersion = curl_version();
149
  $appInfo = Stripe::getAppInfo();
150
- $ua = array(
151
  'bindings_version' => Stripe::VERSION,
152
  'lang' => 'php',
153
  'lang_version' => $langVersion,
154
  'publisher' => 'stripe',
155
  'uname' => $uname,
156
- 'httplib' => 'curl ' . $curlVersion['version'],
157
- 'ssllib' => $curlVersion['ssl_version'],
158
- );
 
159
  if ($appInfo !== null) {
160
  $uaString .= ' ' . self::_formatAppInfo($appInfo);
161
  $ua['application'] = $appInfo;
162
  }
163
 
164
- $defaultHeaders = array(
165
  'X-Stripe-Client-User-Agent' => json_encode($ua),
166
  'User-Agent' => $uaString,
167
  'Authorization' => 'Bearer ' . $apiKey,
168
- );
169
  return $defaultHeaders;
170
  }
171
 
 
 
 
 
 
 
 
 
 
 
 
172
  private function _requestRaw($method, $url, $params, $headers)
173
  {
174
  $myApiKey = $this->_apiKey;
@@ -184,9 +342,17 @@ class ApiRequestor
184
  throw new Error\Authentication($msg);
185
  }
186
 
 
 
 
 
 
 
 
 
187
  $absUrl = $this->_apiBase.$url;
188
  $params = self::_encodeObjects($params);
189
- $defaultHeaders = $this->_defaultHeaders($myApiKey);
190
  if (Stripe::$apiVersion) {
191
  $defaultHeaders['Stripe-Version'] = Stripe::$apiVersion;
192
  }
@@ -195,6 +361,10 @@ class ApiRequestor
195
  $defaultHeaders['Stripe-Account'] = Stripe::$accountId;
196
  }
197
 
 
 
 
 
198
  $hasFile = false;
199
  $hasCurlFile = class_exists('\CURLFile', false);
200
  foreach ($params as $k => $v) {
@@ -213,12 +383,14 @@ class ApiRequestor
213
  }
214
 
215
  $combinedHeaders = array_merge($defaultHeaders, $headers);
216
- $rawHeaders = array();
217
 
218
  foreach ($combinedHeaders as $header => $value) {
219
  $rawHeaders[] = $header . ': ' . $value;
220
  }
221
 
 
 
222
  list($rbody, $rcode, $rheaders) = $this->httpClient()->request(
223
  $method,
224
  $absUrl,
@@ -226,9 +398,24 @@ class ApiRequestor
226
  $params,
227
  $hasFile
228
  );
229
- return array($rbody, $rcode, $rheaders, $myApiKey);
 
 
 
 
 
 
 
 
230
  }
231
 
 
 
 
 
 
 
 
232
  private function _processResourceParam($resource, $hasCurlFile)
233
  {
234
  if (get_resource_type($resource) !== 'stream') {
@@ -252,27 +439,65 @@ class ApiRequestor
252
  }
253
  }
254
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
255
  private function _interpretResponse($rbody, $rcode, $rheaders)
256
  {
257
- try {
258
- $resp = json_decode($rbody, true);
259
- } catch (Exception $e) {
260
  $msg = "Invalid response body from API: $rbody "
261
- . "(HTTP response code was $rcode)";
262
  throw new Error\Api($msg, $rcode, $rbody);
263
  }
264
 
265
  if ($rcode < 200 || $rcode >= 300) {
266
- $this->handleApiError($rbody, $rcode, $rheaders, $resp);
267
  }
268
  return $resp;
269
  }
270
 
 
 
 
 
 
271
  public static function setHttpClient($client)
272
  {
273
  self::$_httpClient = $client;
274
  }
275
 
 
 
 
 
 
 
 
 
 
 
 
 
 
276
  private function httpClient()
277
  {
278
  if (!self::$_httpClient) {
9
  */
10
  class ApiRequestor
11
  {
12
+ /**
13
+ * @var string|null
14
+ */
15
  private $_apiKey;
16
 
17
+ /**
18
+ * @var string
19
+ */
20
  private $_apiBase;
21
 
22
+ /**
23
+ * @var HttpClient\ClientInterface
24
+ */
25
  private static $_httpClient;
26
 
27
+ /**
28
+ * @var RequestTelemetry
29
+ */
30
+ private static $requestTelemetry;
31
+
32
+ /**
33
+ * ApiRequestor constructor.
34
+ *
35
+ * @param string|null $apiKey
36
+ * @param string|null $apiBase
37
+ */
38
  public function __construct($apiKey = null, $apiBase = null)
39
  {
40
  $this->_apiKey = $apiKey;
44
  $this->_apiBase = $apiBase;
45
  }
46
 
47
+ /**
48
+ * Creates a telemetry json blob for use in 'X-Stripe-Client-Telemetry' headers
49
+ * @static
50
+ *
51
+ * @param RequestTelemetry $requestTelemetry
52
+ * @return string
53
+ */
54
+ private static function _telemetryJson($requestTelemetry)
55
+ {
56
+ $payload = array(
57
+ 'last_request_metrics' => array(
58
+ 'request_id' => $requestTelemetry->requestId,
59
+ 'request_duration_ms' => $requestTelemetry->requestDuration,
60
+ ));
61
+
62
+ $result = json_encode($payload);
63
+ if ($result != false) {
64
+ return $result;
65
+ } else {
66
+ Stripe::getLogger()->error("Serializing telemetry payload failed!");
67
+ return "{}";
68
+ }
69
+ }
70
+
71
+ /**
72
+ * @static
73
+ *
74
+ * @param ApiResource|bool|array|mixed $d
75
+ *
76
+ * @return ApiResource|array|string|mixed
77
+ */
78
  private static function _encodeObjects($d)
79
  {
80
  if ($d instanceof ApiResource) {
84
  } elseif ($d === false) {
85
  return 'false';
86
  } elseif (is_array($d)) {
87
+ $res = [];
88
  foreach ($d as $k => $v) {
89
  $res[$k] = self::_encodeObjects($v);
90
  }
95
  }
96
 
97
  /**
98
+ * @param string $method
99
+ * @param string $url
100
  * @param array|null $params
101
  * @param array|null $headers
102
  *
103
  * @return array An array whose first element is an API response and second
104
  * element is the API key used to make the request.
105
+ * @throws Error\Api
106
+ * @throws Error\Authentication
107
+ * @throws Error\Card
108
+ * @throws Error\InvalidRequest
109
+ * @throws Error\OAuth\InvalidClient
110
+ * @throws Error\OAuth\InvalidGrant
111
+ * @throws Error\OAuth\InvalidRequest
112
+ * @throws Error\OAuth\InvalidScope
113
+ * @throws Error\OAuth\UnsupportedGrantType
114
+ * @throws Error\OAuth\UnsupportedResponseType
115
+ * @throws Error\Permission
116
+ * @throws Error\RateLimit
117
+ * @throws Error\Idempotency
118
+ * @throws Error\ApiConnection
119
  */
120
  public function request($method, $url, $params = null, $headers = null)
121
  {
122
+ $params = $params ?: [];
123
+ $headers = $headers ?: [];
 
 
 
 
124
  list($rbody, $rcode, $rheaders, $myApiKey) =
125
  $this->_requestRaw($method, $url, $params, $headers);
126
  $json = $this->_interpretResponse($rbody, $rcode, $rheaders);
127
  $resp = new ApiResponse($rbody, $rcode, $rheaders, $json);
128
+ return [$resp, $myApiKey];
129
  }
130
 
131
  /**
141
  * permissions.
142
  * @throws Error\Card if the error is the error code is 402 (payment
143
  * required)
144
+ * @throws Error\InvalidRequest if the error is caused by the user.
145
+ * @throws Error\Idempotency if the error is caused by an idempotency key.
146
+ * @throws Error\OAuth\InvalidClient
147
+ * @throws Error\OAuth\InvalidGrant
148
+ * @throws Error\OAuth\InvalidRequest
149
+ * @throws Error\OAuth\InvalidScope
150
+ * @throws Error\OAuth\UnsupportedGrantType
151
+ * @throws Error\OAuth\UnsupportedResponseType
152
+ * @throws Error\Permission if the error is caused by insufficient
153
+ * permissions.
154
  * @throws Error\RateLimit if the error is caused by too many requests
155
  * hitting the API.
156
  * @throws Error\Api otherwise.
157
  */
158
+ public function handleErrorResponse($rbody, $rcode, $rheaders, $resp)
159
  {
160
  if (!is_array($resp) || !isset($resp['error'])) {
161
  $msg = "Invalid response object from API: $rbody "
163
  throw new Error\Api($msg, $rcode, $rbody, $resp, $rheaders);
164
  }
165
 
166
+ $errorData = $resp['error'];
167
+
168
+ $error = null;
169
+ if (is_string($errorData)) {
170
+ $error = self::_specificOAuthError($rbody, $rcode, $rheaders, $resp, $errorData);
171
+ }
172
+ if (!$error) {
173
+ $error = self::_specificAPIError($rbody, $rcode, $rheaders, $resp, $errorData);
174
+ }
175
+
176
+ throw $error;
177
+ }
178
+
179
+ /**
180
+ * @static
181
+ *
182
+ * @param string $rbody
183
+ * @param int $rcode
184
+ * @param array $rheaders
185
+ * @param array $resp
186
+ * @param array $errorData
187
+ *
188
+ * @return Error\RateLimit|Error\Idempotency|Error\InvalidRequest|Error\Authentication|Error\Card|Error\Permission|Error\Api
189
+ */
190
+ private static function _specificAPIError($rbody, $rcode, $rheaders, $resp, $errorData)
191
+ {
192
+ $msg = isset($errorData['message']) ? $errorData['message'] : null;
193
+ $param = isset($errorData['param']) ? $errorData['param'] : null;
194
+ $code = isset($errorData['code']) ? $errorData['code'] : null;
195
+ $type = isset($errorData['type']) ? $errorData['type'] : null;
196
 
197
  switch ($rcode) {
198
  case 400:
199
  // 'rate_limit' code is deprecated, but left here for backwards compatibility
200
  // for API versions earlier than 2015-09-08
201
  if ($code == 'rate_limit') {
202
+ return new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders);
203
+ }
204
+ if ($type == 'idempotency_error') {
205
+ return new Error\Idempotency($msg, $rcode, $rbody, $resp, $rheaders);
206
  }
207
 
208
+ // no break
209
  case 404:
210
+ return new Error\InvalidRequest($msg, $param, $rcode, $rbody, $resp, $rheaders);
211
  case 401:
212
+ return new Error\Authentication($msg, $rcode, $rbody, $resp, $rheaders);
213
  case 402:
214
+ return new Error\Card($msg, $param, $code, $rcode, $rbody, $resp, $rheaders);
215
  case 403:
216
+ return new Error\Permission($msg, $rcode, $rbody, $resp, $rheaders);
217
  case 429:
218
+ return new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders);
219
  default:
220
+ return new Error\Api($msg, $rcode, $rbody, $resp, $rheaders);
221
+ }
222
+ }
223
+
224
+ /**
225
+ * @static
226
+ *
227
+ * @param string|bool $rbody
228
+ * @param int $rcode
229
+ * @param array $rheaders
230
+ * @param array $resp
231
+ * @param string $errorCode
232
+ *
233
+ * @return null|Error\OAuth\InvalidClient|Error\OAuth\InvalidGrant|Error\OAuth\InvalidRequest|Error\OAuth\InvalidScope|Error\OAuth\UnsupportedGrantType|Error\OAuth\UnsupportedResponseType
234
+ */
235
+ private static function _specificOAuthError($rbody, $rcode, $rheaders, $resp, $errorCode)
236
+ {
237
+ $description = isset($resp['error_description']) ? $resp['error_description'] : $errorCode;
238
+
239
+ switch ($errorCode) {
240
+ case 'invalid_client':
241
+ return new Error\OAuth\InvalidClient($errorCode, $description, $rcode, $rbody, $resp, $rheaders);
242
+ case 'invalid_grant':
243
+ return new Error\OAuth\InvalidGrant($errorCode, $description, $rcode, $rbody, $resp, $rheaders);
244
+ case 'invalid_request':
245
+ return new Error\OAuth\InvalidRequest($errorCode, $description, $rcode, $rbody, $resp, $rheaders);
246
+ case 'invalid_scope':
247
+ return new Error\OAuth\InvalidScope($errorCode, $description, $rcode, $rbody, $resp, $rheaders);
248
+ case 'unsupported_grant_type':
249
+ return new Error\OAuth\UnsupportedGrantType($errorCode, $description, $rcode, $rbody, $resp, $rheaders);
250
+ case 'unsupported_response_type':
251
+ return new Error\OAuth\UnsupportedResponseType($errorCode, $description, $rcode, $rbody, $resp, $rheaders);
252
  }
253
+
254
+ return null;
255
  }
256
 
257
+ /**
258
+ * @static
259
+ *
260
+ * @param null|array $appInfo
261
+ *
262
+ * @return null|string
263
+ */
264
  private static function _formatAppInfo($appInfo)
265
  {
266
  if ($appInfo !== null) {
277
  }
278
  }
279
 
280
+ /**
281
+ * @static
282
+ *
283
+ * @param string $apiKey
284
+ * @param null $clientInfo
285
+ *
286
+ * @return array
287
+ */
288
+ private static function _defaultHeaders($apiKey, $clientInfo = null)
289
  {
 
 
290
  $uaString = 'Stripe/v1 PhpBindings/' . Stripe::VERSION;
291
 
292
  $langVersion = phpversion();
293
  $uname = php_uname();
294
+
295
  $appInfo = Stripe::getAppInfo();
296
+ $ua = [
297
  'bindings_version' => Stripe::VERSION,
298
  'lang' => 'php',
299
  'lang_version' => $langVersion,
300
  'publisher' => 'stripe',
301
  'uname' => $uname,
302
+ ];
303
+ if ($clientInfo) {
304
+ $ua = array_merge($clientInfo, $ua);
305
+ }
306
  if ($appInfo !== null) {
307
  $uaString .= ' ' . self::_formatAppInfo($appInfo);
308
  $ua['application'] = $appInfo;
309
  }
310
 
311
+ $defaultHeaders = [
312
  'X-Stripe-Client-User-Agent' => json_encode($ua),
313
  'User-Agent' => $uaString,
314
  'Authorization' => 'Bearer ' . $apiKey,
315
+ ];
316
  return $defaultHeaders;
317
  }
318
 
319
+ /**
320
+ * @param string $method
321
+ * @param string $url
322
+ * @param array $params
323
+ * @param array $headers
324
+ *
325
+ * @return array
326
+ * @throws Error\Api
327
+ * @throws Error\ApiConnection
328
+ * @throws Error\Authentication
329
+ */
330
  private function _requestRaw($method, $url, $params, $headers)
331
  {
332
  $myApiKey = $this->_apiKey;
342
  throw new Error\Authentication($msg);
343
  }
344
 
345
+ // Clients can supply arbitrary additional keys to be included in the
346
+ // X-Stripe-Client-User-Agent header via the optional getUserAgentInfo()
347
+ // method
348
+ $clientUAInfo = null;
349
+ if (method_exists($this->httpClient(), 'getUserAgentInfo')) {
350
+ $clientUAInfo = $this->httpClient()->getUserAgentInfo();
351
+ }
352
+
353
  $absUrl = $this->_apiBase.$url;
354
  $params = self::_encodeObjects($params);
355
+ $defaultHeaders = $this->_defaultHeaders($myApiKey, $clientUAInfo);
356
  if (Stripe::$apiVersion) {
357
  $defaultHeaders['Stripe-Version'] = Stripe::$apiVersion;
358
  }
361
  $defaultHeaders['Stripe-Account'] = Stripe::$accountId;
362
  }
363
 
364
+ if (Stripe::$enableTelemetry && self::$requestTelemetry != null) {
365
+ $defaultHeaders["X-Stripe-Client-Telemetry"] = self::_telemetryJson(self::$requestTelemetry);
366
+ }
367
+
368
  $hasFile = false;
369
  $hasCurlFile = class_exists('\CURLFile', false);
370
  foreach ($params as $k => $v) {
383
  }
384
 
385
  $combinedHeaders = array_merge($defaultHeaders, $headers);
386
+ $rawHeaders = [];
387
 
388
  foreach ($combinedHeaders as $header => $value) {
389
  $rawHeaders[] = $header . ': ' . $value;
390
  }
391
 
392
+ $requestStartMs = Util\Util::currentTimeMillis();
393
+
394
  list($rbody, $rcode, $rheaders) = $this->httpClient()->request(
395
  $method,
396
  $absUrl,
398
  $params,
399
  $hasFile
400
  );
401
+
402
+ if (array_key_exists('request-id', $rheaders)) {
403
+ self::$requestTelemetry = new RequestTelemetry(
404
+ $rheaders['request-id'],
405
+ Util\Util::currentTimeMillis() - $requestStartMs
406
+ );
407
+ }
408
+
409
+ return [$rbody, $rcode, $rheaders, $myApiKey];
410
  }
411
 
412
+ /**
413
+ * @param resource $resource
414
+ * @param bool $hasCurlFile
415
+ *
416
+ * @return \CURLFile|string
417
+ * @throws Error\Api
418
+ */
419
  private function _processResourceParam($resource, $hasCurlFile)
420
  {
421
  if (get_resource_type($resource) !== 'stream') {
439
  }
440
  }
441
 
442
+ /**
443
+ * @param string $rbody
444
+ * @param int $rcode
445
+ * @param array $rheaders
446
+ *
447
+ * @return mixed
448
+ * @throws Error\Api
449
+ * @throws Error\Authentication
450
+ * @throws Error\Card
451
+ * @throws Error\InvalidRequest
452
+ * @throws Error\OAuth\InvalidClient
453
+ * @throws Error\OAuth\InvalidGrant
454
+ * @throws Error\OAuth\InvalidRequest
455
+ * @throws Error\OAuth\InvalidScope
456
+ * @throws Error\OAuth\UnsupportedGrantType
457
+ * @throws Error\OAuth\UnsupportedResponseType
458
+ * @throws Error\Permission
459
+ * @throws Error\RateLimit
460
+ * @throws Error\Idempotency
461
+ */
462
  private function _interpretResponse($rbody, $rcode, $rheaders)
463
  {
464
+ $resp = json_decode($rbody, true);
465
+ $jsonError = json_last_error();
466
+ if ($resp === null && $jsonError !== JSON_ERROR_NONE) {
467
  $msg = "Invalid response body from API: $rbody "
468
+ . "(HTTP response code was $rcode, json_last_error() was $jsonError)";
469
  throw new Error\Api($msg, $rcode, $rbody);
470
  }
471
 
472
  if ($rcode < 200 || $rcode >= 300) {
473
+ $this->handleErrorResponse($rbody, $rcode, $rheaders, $resp);
474
  }
475
  return $resp;
476
  }
477
 
478
+ /**
479
+ * @static
480
+ *
481
+ * @param HttpClient\ClientInterface $client
482
+ */
483
  public static function setHttpClient($client)
484
  {
485
  self::$_httpClient = $client;
486
  }
487
 
488
+ /**
489
+ * @static
490
+ *
491
+ * Resets any stateful telemetry data
492
+ */
493
+ public static function resetTelemetry()
494
+ {
495
+ self::$requestTelemetry = null;
496
+ }
497
+
498
+ /**
499
+ * @return HttpClient\ClientInterface
500
+ */
501
  private function httpClient()
502
  {
503
  if (!self::$_httpClient) {
app/api/Stripe/ApiResource.php CHANGED
@@ -9,11 +9,42 @@ namespace Stripe;
9
  */
10
  abstract class ApiResource extends StripeObject
11
  {
12
- private static $HEADERS_TO_PERSIST = array('Stripe-Account' => true, 'Stripe-Version' => true);
13
 
14
- public static function baseUrl()
 
 
 
 
 
 
 
15
  {
16
- return Stripe::$apiBase;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  }
18
 
19
  /**
@@ -36,27 +67,11 @@ abstract class ApiResource extends StripeObject
36
  }
37
 
38
  /**
39
- * @return string The name of the class, with namespacing and underscores
40
- * stripped.
41
  */
42
- public static function className()
43
  {
44
- $class = get_called_class();
45
- // Useful for namespaces: Foo\Charge
46
- if ($postfixNamespaces = strrchr($class, '\\')) {
47
- $class = substr($postfixNamespaces, 1);
48
- }
49
- // Useful for underscored 'namespaces': Foo_Charge
50
- if ($postfixFakeNamespaces = strrchr($class, '')) {
51
- $class = $postfixFakeNamespaces;
52
- }
53
- if (substr($class, 0, strlen('Stripe')) == 'Stripe') {
54
- $class = substr($class, strlen('Stripe'));
55
- }
56
- $class = str_replace('_', '', $class);
57
- $name = urlencode($class);
58
- $name = strtolower($name);
59
- return $name;
60
  }
61
 
62
  /**
@@ -64,7 +79,9 @@ abstract class ApiResource extends StripeObject
64
  */
65
  public static function classUrl()
66
  {
67
- $base = static::className();
 
 
68
  return "/v1/${base}s";
69
  }
70
 
@@ -92,114 +109,4 @@ abstract class ApiResource extends StripeObject
92
  {
93
  return static::resourceUrl($this['id']);
94
  }
95
-
96
- private static function _validateParams($params = null)
97
- {
98
- if ($params && !is_array($params)) {
99
- $message = "You must pass an array as the first argument to Stripe API "
100
- . "method calls. (HINT: an example call to create a charge "
101
- . "would be: \"Stripe\\Charge::create(array('amount' => 100, "
102
- . "'currency' => 'usd', 'card' => array('number' => "
103
- . "4242424242424242, 'exp_month' => 5, 'exp_year' => 2015)))\")";
104
- throw new Error\Api($message);
105
- }
106
- }
107
-
108
- protected function _request($method, $url, $params = array(), $options = null)
109
- {
110
- $opts = $this->_opts->merge($options);
111
- list($resp, $options) = static::_staticRequest($method, $url, $params, $opts);
112
- $this->setLastResponse($resp);
113
- return array($resp->json, $options);
114
- }
115
-
116
- protected static function _staticRequest($method, $url, $params, $options)
117
- {
118
- $opts = Util\RequestOptions::parse($options);
119
- $requestor = new ApiRequestor($opts->apiKey, static::baseUrl());
120
- list($response, $opts->apiKey) = $requestor->request($method, $url, $params, $opts->headers);
121
- foreach ($opts->headers as $k => $v) {
122
- if (!array_key_exists($k, self::$HEADERS_TO_PERSIST)) {
123
- unset($opts->headers[$k]);
124
- }
125
- }
126
- return array($response, $opts);
127
- }
128
-
129
- protected static function _retrieve($id, $options = null)
130
- {
131
- $opts = Util\RequestOptions::parse($options);
132
- $instance = new static($id, $opts);
133
- $instance->refresh();
134
- return $instance;
135
- }
136
-
137
- protected static function _all($params = null, $options = null)
138
- {
139
- self::_validateParams($params);
140
- $url = static::classUrl();
141
-
142
- list($response, $opts) = static::_staticRequest('get', $url, $params, $options);
143
- $obj = Util\Util::convertToStripeObject($response->json, $opts);
144
- if (!is_a($obj, 'Stripe\\Collection')) {
145
- $class = get_class($obj);
146
- $message = "Expected type \"Stripe\\Collection\", got \"$class\" instead";
147
- throw new Error\Api($message);
148
- }
149
- $obj->setLastResponse($response);
150
- $obj->setRequestParams($params);
151
- return $obj;
152
- }
153
-
154
- protected static function _create($params = null, $options = null)
155
- {
156
- self::_validateParams($params);
157
- $base = static::baseUrl();
158
- $url = static::classUrl();
159
-
160
- list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
161
- $obj = Util\Util::convertToStripeObject($response->json, $opts);
162
- $obj->setLastResponse($response);
163
- return $obj;
164
- }
165
-
166
- /**
167
- * @param string $id The ID of the API resource to update.
168
- * @param array|null $params
169
- * @param array|string|null $opts
170
- *
171
- * @return ApiResource the updated API resource
172
- */
173
- protected static function _update($id, $params = null, $options = null)
174
- {
175
- self::_validateParams($params);
176
- $base = static::baseUrl();
177
- $url = static::resourceUrl($id);
178
-
179
- list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
180
- $obj = Util\Util::convertToStripeObject($response->json, $opts);
181
- $obj->setLastResponse($response);
182
- return $obj;
183
- }
184
-
185
- protected function _save($options = null)
186
- {
187
- $params = $this->serializeParameters();
188
- if (count($params) > 0) {
189
- $url = $this->instanceUrl();
190
- list($response, $opts) = $this->_request('post', $url, $params, $options);
191
- $this->refreshFrom($response, $opts);
192
- }
193
- return $this;
194
- }
195
-
196
- protected function _delete($params = null, $options = null)
197
- {
198
- self::_validateParams($params);
199
-
200
- $url = $this->instanceUrl();
201
- list($response, $opts) = $this->_request('delete', $url, $params, $options);
202
- $this->refreshFrom($response, $opts);
203
- return $this;
204
- }
205
  }
9
  */
10
  abstract class ApiResource extends StripeObject
11
  {
12
+ use ApiOperations\Request;
13
 
14
+ /**
15
+ * @return \Stripe\Util\Set A list of fields that can be their own type of
16
+ * API resource (say a nested card under an account for example), and if
17
+ * that resource is set, it should be transmitted to the API on a create or
18
+ * update. Doing so is not the default behavior because API resources
19
+ * should normally be persisted on their own RESTful endpoints.
20
+ */
21
+ public static function getSavedNestedResources()
22
  {
23
+ static $savedNestedResources = null;
24
+ if ($savedNestedResources === null) {
25
+ $savedNestedResources = new Util\Set();
26
+ }
27
+ return $savedNestedResources;
28
+ }
29
+
30
+ /**
31
+ * @var boolean A flag that can be set a behavior that will cause this
32
+ * resource to be encoded and sent up along with an update of its parent
33
+ * resource. This is usually not desirable because resources are updated
34
+ * individually on their own endpoints, but there are certain cases,
35
+ * replacing a customer's source for example, where this is allowed.
36
+ */
37
+ public $saveWithParent = false;
38
+
39
+ public function __set($k, $v)
40
+ {
41
+ parent::__set($k, $v);
42
+ $v = $this->$k;
43
+ if ((static::getSavedNestedResources()->includes($k)) &&
44
+ ($v instanceof ApiResource)) {
45
+ $v->saveWithParent = true;
46
+ }
47
+ return $v;
48
  }
49
 
50
  /**
67
  }
68
 
69
  /**
70
+ * @return string The base URL for the given class.
 
71
  */
72
+ public static function baseUrl()
73
  {
74
+ return Stripe::$apiBase;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  }
76
 
77
  /**
79
  */
80
  public static function classUrl()
81
  {
82
+ // Replace dots with slashes for namespaced resources, e.g. if the object's name is
83
+ // "foo.bar", then its URL will be "/v1/foo/bars".
84
+ $base = str_replace('.', '/', static::OBJECT_NAME);
85
  return "/v1/${base}s";
86
  }
87
 
109
  {
110
  return static::resourceUrl($this['id']);
111
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  }
app/api/Stripe/ApplePayDomain.php CHANGED
@@ -9,7 +9,13 @@ namespace Stripe;
9
  */
10
  class ApplePayDomain extends ApiResource
11
  {
12
-
 
 
 
 
 
 
13
  /**
14
  * @return string The class URL for this resource. It needs to be special
15
  * cased because it doesn't fit into the standard resource pattern.
@@ -18,48 +24,4 @@ class ApplePayDomain extends ApiResource
18
  {
19
  return '/v1/apple_pay/domains';
20
  }
21
-
22
- /**
23
- * @param string $id The ID of the domain to retrieve.
24
- * @param array|string|null $opts
25
- *
26
- * @return ApplePayDomain
27
- */
28
- public static function retrieve($id, $opts = null)
29
- {
30
- return self::_retrieve($id, $opts);
31
- }
32
-
33
- /**
34
- * @param array|null $params
35
- * @param array|string|null $opts
36
- *
37
- * @return ApplePayDomain The created domain.
38
- */
39
- public static function create($params = null, $opts = null)
40
- {
41
- return self::_create($params, $opts);
42
- }
43
-
44
- /**
45
- * @param array|null $params
46
- * @param array|string|null $opts
47
- *
48
- * @return ApplePayDomain The deleted domain.
49
- */
50
- public function delete($params = null, $opts = null)
51
- {
52
- return $this->_delete($params, $opts);
53
- }
54
-
55
- /**
56
- * @param array|null $params
57
- * @param array|string|null $opts
58
- *
59
- * @return Collection of ApplePayDomains
60
- */
61
- public static function all($params = null, $opts = null)
62
- {
63
- return self::_all($params, $opts);
64
- }
65
  }
9
  */
10
  class ApplePayDomain extends ApiResource
11
  {
12
+ const OBJECT_NAME = "apple_pay_domain";
13
+
14
+ use ApiOperations\All;
15
+ use ApiOperations\Create;
16
+ use ApiOperations\Delete;
17
+ use ApiOperations\Retrieve;
18
+
19
  /**
20
  * @return string The class URL for this resource. It needs to be special
21
  * cased because it doesn't fit into the standard resource pattern.
24
  {
25
  return '/v1/apple_pay/domains';
26
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  }
app/api/Stripe/ApplicationFee.php CHANGED
@@ -5,65 +5,93 @@ namespace Stripe;
5
  /**
6
  * Class ApplicationFee
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class ApplicationFee extends ApiResource
11
  {
 
 
 
 
 
 
 
 
12
  /**
13
- * This is a special case because the application fee endpoint has an
14
- * underscore in it. The parent `className` function strips underscores.
15
  *
16
- * @return string The name of the class.
17
  */
18
- public static function className()
19
  {
20
- return 'application_fee';
 
 
21
  }
22
 
23
  /**
24
- * @param string $id The ID of the application fee to retrieve.
 
25
  * @param array|string|null $opts
26
  *
27
- * @return ApplicationFee
28
  */
29
- public static function retrieve($id, $opts = null)
30
  {
31
- return self::_retrieve($id, $opts);
32
  }
33
 
34
  /**
35
- * @param string $id The ID of the application fee to update.
 
36
  * @param array|null $params
37
- * @param array|string|null $options
38
  *
39
- * @return ApplicationFee The updated application fee.
40
  */
41
- public static function update($id, $params = null, $options = null)
42
  {
43
- return self::_update($id, $params, $options);
44
  }
45
 
46
  /**
 
 
47
  * @param array|null $params
48
  * @param array|string|null $opts
49
  *
50
- * @return Collection of ApplicationFees
51
  */
52
- public static function all($params = null, $opts = null)
53
  {
54
- return self::_all($params, $opts);
55
  }
56
 
57
  /**
 
58
  * @param array|null $params
59
  * @param array|string|null $opts
60
  *
61
- * @return ApplicationFee The refunded application fee.
62
  */
63
- public function refund($params = null, $opts = null)
64
  {
65
- $this->refunds->create($params, $opts);
66
- $this->refresh();
67
- return $this;
68
  }
69
  }
5
  /**
6
  * Class ApplicationFee
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $account
11
+ * @property int $amount
12
+ * @property int $amount_refunded
13
+ * @property string $application
14
+ * @property string $balance_transaction
15
+ * @property string $charge
16
+ * @property int $created
17
+ * @property string $currency
18
+ * @property bool $livemode
19
+ * @property string $originating_transaction
20
+ * @property bool $refunded
21
+ * @property Collection $refunds
22
+ *
23
  * @package Stripe
24
  */
25
  class ApplicationFee extends ApiResource
26
  {
27
+ const OBJECT_NAME = "application_fee";
28
+
29
+ use ApiOperations\All;
30
+ use ApiOperations\NestedResource;
31
+ use ApiOperations\Retrieve;
32
+
33
+ const PATH_REFUNDS = '/refunds';
34
+
35
  /**
36
+ * @param array|null $params
37
+ * @param array|string|null $opts
38
  *
39
+ * @return ApplicationFee The refunded application fee.
40
  */
41
+ public function refund($params = null, $opts = null)
42
  {
43
+ $this->refunds->create($params, $opts);
44
+ $this->refresh();
45
+ return $this;
46
  }
47
 
48
  /**
49
+ * @param string|null $id The ID of the application fee on which to create the refund.
50
+ * @param array|null $params
51
  * @param array|string|null $opts
52
  *
53
+ * @return ApplicationFeeRefund
54
  */
55
+ public static function createRefund($id, $params = null, $opts = null)
56
  {
57
+ return self::_createNestedResource($id, static::PATH_REFUNDS, $params, $opts);
58
  }
59
 
60
  /**
61
+ * @param string|null $id The ID of the application fee to which the refund belongs.
62
+ * @param array|null $refundId The ID of the refund to retrieve.
63
  * @param array|null $params
64
+ * @param array|string|null $opts
65
  *
66
+ * @return ApplicationFeeRefund
67
  */
68
+ public static function retrieveRefund($id, $refundId, $params = null, $opts = null)
69
  {
70
+ return self::_retrieveNestedResource($id, static::PATH_REFUNDS, $refundId, $params, $opts);
71
  }
72
 
73
  /**
74
+ * @param string|null $id The ID of the application fee to which the refund belongs.
75
+ * @param array|null $refundId The ID of the refund to update.
76
  * @param array|null $params
77
  * @param array|string|null $opts
78
  *
79
+ * @return ApplicationFeeRefund
80
  */
81
+ public static function updateRefund($id, $refundId, $params = null, $opts = null)
82
  {
83
+ return self::_updateNestedResource($id, static::PATH_REFUNDS, $refundId, $params, $opts);
84
  }
85
 
86
  /**
87
+ * @param string|null $id The ID of the application fee on which to retrieve the refunds.
88
  * @param array|null $params
89
  * @param array|string|null $opts
90
  *
91
+ * @return Collection The list of refunds.
92
  */
93
+ public static function allRefunds($id, $params = null, $opts = null)
94
  {
95
+ return self::_allNestedResources($id, static::PATH_REFUNDS, $params, $opts);
 
 
96
  }
97
  }
app/api/Stripe/ApplicationFeeRefund.php CHANGED
@@ -5,10 +5,25 @@ namespace Stripe;
5
  /**
6
  * Class ApplicationFeeRefund
7
  *
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class ApplicationFeeRefund extends ApiResource
11
  {
 
 
 
 
 
 
12
  /**
13
  * @return string The API URL for this Stripe refund.
14
  */
5
  /**
6
  * Class ApplicationFeeRefund
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property string $balance_transaction
12
+ * @property int $created
13
+ * @property string $currency
14
+ * @property string $fee
15
+ * @property StripeObject $metadata
16
+ *
17
  * @package Stripe
18
  */
19
  class ApplicationFeeRefund extends ApiResource
20
  {
21
+ const OBJECT_NAME = "fee_refund";
22
+
23
+ use ApiOperations\Update {
24
+ save as protected _save;
25
+ }
26
+
27
  /**
28
  * @return string The API URL for this Stripe refund.
29
  */
app/api/Stripe/AttachedObject.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
-
3
- namespace Stripe;
4
-
5
- /**
6
- * Class AttachedObject
7
- *
8
- * e.g. metadata on Stripe objects.
9
- *
10
- * @package Stripe
11
- */
12
- class AttachedObject extends StripeObject
13
- {
14
- /**
15
- * Updates this object.
16
- *
17
- * @param array $properties A mapping of properties to update on this object.
18
- */
19
- public function replaceWith($properties)
20
- {
21
- $removed = array_diff(array_keys($this->_values), array_keys($properties));
22
- // Don't unset, but rather set to null so we send up '' for deletion.
23
- foreach ($removed as $k) {
24
- $this->$k = null;
25
- }
26
-
27
- foreach ($properties as $k => $v) {
28
- $this->$k = $v;
29
- }
30
- }
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/api/Stripe/Balance.php CHANGED
@@ -6,14 +6,17 @@ namespace Stripe;
6
  * Class Balance
7
  *
8
  * @property string $object
9
- * @property mixed $available
10
- * @property bool $livedmode
11
- * @property mixed $pending
 
12
  *
13
  * @package Stripe
14
  */
15
  class Balance extends SingletonApiResource
16
  {
 
 
17
  /**
18
  * @param array|string|null $opts
19
  *
6
  * Class Balance
7
  *
8
  * @property string $object
9
+ * @property array $available
10
+ * @property array $connect_reserved
11
+ * @property bool $livemode
12
+ * @property array $pending
13
  *
14
  * @package Stripe
15
  */
16
  class Balance extends SingletonApiResource
17
  {
18
+ const OBJECT_NAME = "balance";
19
+
20
  /**
21
  * @param array|string|null $opts
22
  *
app/api/Stripe/BalanceTransaction.php CHANGED
@@ -12,11 +12,11 @@ namespace Stripe;
12
  * @property int $created
13
  * @property string $currency
14
  * @property string $description
 
15
  * @property int $fee
16
  * @property mixed $fee_details
17
  * @property int $net
18
  * @property string $source
19
- * @property mixed $sourced_transfers
20
  * @property string $status
21
  * @property string $type
22
  *
@@ -24,34 +24,42 @@ namespace Stripe;
24
  */
25
  class BalanceTransaction extends ApiResource
26
  {
27
- /**
28
- * @return string The class URL for this resource. It needs to be special
29
- * cased because it doesn't fit into the standard resource pattern.
30
- */
31
- public static function classUrl()
32
- {
33
- return "/v1/balance/history";
34
- }
35
 
36
- /**
37
- * @param string $id The ID of the balance transaction to retrieve.
38
- * @param array|string|null $opts
39
- *
40
- * @return BalanceTransaction
41
- */
42
- public static function retrieve($id, $opts = null)
43
- {
44
- return self::_retrieve($id, $opts);
45
- }
46
 
47
  /**
48
- * @param array|null $params
49
- * @param array|string|null $opts
50
- *
51
- * @return Collection of BalanceTransactions
52
  */
53
- public static function all($params = null, $opts = null)
54
- {
55
- return self::_all($params, $opts);
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  }
12
  * @property int $created
13
  * @property string $currency
14
  * @property string $description
15
+ * @property float $exchange_rate
16
  * @property int $fee
17
  * @property mixed $fee_details
18
  * @property int $net
19
  * @property string $source
 
20
  * @property string $status
21
  * @property string $type
22
  *
24
  */
25
  class BalanceTransaction extends ApiResource
26
  {
27
+ const OBJECT_NAME = "balance_transaction";
 
 
 
 
 
 
 
28
 
29
+ use ApiOperations\All;
30
+ use ApiOperations\Retrieve;
 
 
 
 
 
 
 
 
31
 
32
  /**
33
+ * Possible string representations of the type of balance transaction.
34
+ * @link https://stripe.com/docs/api/balance/balance_transaction#balance_transaction_object-type
 
 
35
  */
36
+ const TYPE_ADJUSTMENT = 'adjustment';
37
+ const TYPE_ADVANCE = 'advance';
38
+ const TYPE_ADVANCE_FUNDING = 'advance_funding';
39
+ const TYPE_APPLICATION_FEE = 'application_fee';
40
+ const TYPE_APPLICATION_FEE_REFUND = 'application_fee_refund';
41
+ const TYPE_CHARGE = 'charge';
42
+ const TYPE_CONNECT_COLLECTION_TRANSFER = 'connect_collection_transfer';
43
+ const TYPE_ISSUING_AUTHORIZATION_HOLD = 'issuing_authorization_hold';
44
+ const TYPE_ISSUING_AUTHORIZATION_RELEASE = 'issuing_authorization_release';
45
+ const TYPE_ISSUING_TRANSACTION = 'issuing_transaction';
46
+ const TYPE_PAYMENT = 'payment';
47
+ const TYPE_PAYMENT_FAILURE_REFUND = 'payment_failure_refund';
48
+ const TYPE_PAYMENT_REFUND = 'payment_refund';
49
+ const TYPE_PAYOUT = 'payout';
50
+ const TYPE_PAYOUT_CANCEL = 'payout_cancel';
51
+ const TYPE_PAYOUT_FAILURE = 'payout_failure';
52
+ const TYPE_REFUND = 'refund';
53
+ const TYPE_REFUND_FAILURE = 'refund_failure';
54
+ const TYPE_RESERVE_TRANSACTION = 'reserve_transaction';
55
+ const TYPE_RESERVED_FUNDS = 'reserved_funds';
56
+ const TYPE_STRIPE_FEE = 'stripe_fee';
57
+ const TYPE_STRIPE_FX_FEE = 'stripe_fx_fee';
58
+ const TYPE_TAX_FEE = 'tax_fee';
59
+ const TYPE_TOPUP = 'topup';
60
+ const TYPE_TOPUP_REVERSAL = 'topup_reversal';
61
+ const TYPE_TRANSFER = 'transfer';
62
+ const TYPE_TRANSFER_CANCEL = 'transfer_cancel';
63
+ const TYPE_TRANSFER_FAILURE = 'transfer_failure';
64
+ const TYPE_TRANSFER_REFUND = 'transfer_refund';
65
  }
app/api/Stripe/BankAccount.php CHANGED
@@ -5,16 +5,99 @@ namespace Stripe;
5
  /**
6
  * Class BankAccount
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
- class BankAccount extends ExternalAccount
11
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  /**
13
- * @param array|null $params
14
- * @param array|string|null $options
15
  *
16
- * @return BankAccount The verified bank account.
17
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  public function verify($params = null, $options = null)
19
  {
20
  $url = $this->instanceUrl() . '/verify';
5
  /**
6
  * Class BankAccount
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $account
11
+ * @property string $account_holder_name
12
+ * @property string $account_holder_type
13
+ * @property string $bank_name
14
+ * @property string $country
15
+ * @property string $currency
16
+ * @property string $customer
17
+ * @property bool $default_for_currency
18
+ * @property string $fingerprint
19
+ * @property string $last4
20
+ * @property StripeObject $metadata
21
+ * @property string $routing_number
22
+ * @property string $status
23
+ *
24
  * @package Stripe
25
  */
26
+ class BankAccount extends ApiResource
27
  {
28
+ const OBJECT_NAME = "bank_account";
29
+
30
+ use ApiOperations\Delete;
31
+ use ApiOperations\Update;
32
+
33
+ /**
34
+ * Possible string representations of the bank verification status.
35
+ * @link https://stripe.com/docs/api/external_account_bank_accounts/object#account_bank_account_object-status
36
+ */
37
+ const STATUS_NEW = 'new';
38
+ const STATUS_VALIDATED = 'validated';
39
+ const STATUS_VERIFIED = 'verified';
40
+ const STATUS_VERIFICATION_FAILED = 'verification_failed';
41
+ const STATUS_ERRORED = 'errored';
42
+
43
+ /**
44
+ * @return string The instance URL for this resource. It needs to be special
45
+ * cased because it doesn't fit into the standard resource pattern.
46
+ */
47
+ public function instanceUrl()
48
+ {
49
+ if ($this['customer']) {
50
+ $base = Customer::classUrl();
51
+ $parent = $this['customer'];
52
+ $path = 'sources';
53
+ } elseif ($this['account']) {
54
+ $base = Account::classUrl();
55
+ $parent = $this['account'];
56
+ $path = 'external_accounts';
57
+ } else {
58
+ $msg = "Bank accounts cannot be accessed without a customer ID or account ID.";
59
+ throw new Error\InvalidRequest($msg, null);
60
+ }
61
+ $parentExtn = urlencode(Util\Util::utf8($parent));
62
+ $extn = urlencode(Util\Util::utf8($this['id']));
63
+ return "$base/$parentExtn/$path/$extn";
64
+ }
65
+
66
  /**
67
+ * @param array|string $_id
68
+ * @param array|string|null $_opts
69
  *
70
+ * @throws \Stripe\Error\InvalidRequest
71
  */
72
+ public static function retrieve($_id, $_opts = null)
73
+ {
74
+ $msg = "Bank accounts cannot be accessed without a customer ID or account ID. " .
75
+ "Retrieve a bank account using \$customer->sources->retrieve('bank_account_id') or " .
76
+ "\$account->external_accounts->retrieve('bank_account_id') instead.";
77
+ throw new Error\InvalidRequest($msg, null);
78
+ }
79
+
80
+ /**
81
+ * @param string $_id
82
+ * @param array|null $_params
83
+ * @param array|string|null $_options
84
+ *
85
+ * @throws \Stripe\Error\InvalidRequest
86
+ */
87
+ public static function update($_id, $_params = null, $_options = null)
88
+ {
89
+ $msg = "Bank accounts cannot be accessed without a customer ID or account ID. " .
90
+ "Call save() on \$customer->sources->retrieve('bank_account_id') or " .
91
+ "\$account->external_accounts->retrieve('bank_account_id') instead.";
92
+ throw new Error\InvalidRequest($msg, null);
93
+ }
94
+
95
+ /**
96
+ * @param array|null $params
97
+ * @param array|string|null $options
98
+ *
99
+ * @return BankAccount The verified bank account.
100
+ */
101
  public function verify($params = null, $options = null)
102
  {
103
  $url = $this->instanceUrl() . '/verify';
app/api/Stripe/BitcoinReceiver.php CHANGED
@@ -6,9 +6,17 @@ namespace Stripe;
6
  * Class BitcoinReceiver
7
  *
8
  * @package Stripe
 
 
 
9
  */
10
- class BitcoinReceiver extends ExternalAccount
11
  {
 
 
 
 
 
12
  /**
13
  * @return string The class URL for this resource. It needs to be special
14
  * cased because it doesn't fit into the standard resource pattern.
@@ -24,62 +32,17 @@ class BitcoinReceiver extends ExternalAccount
24
  */
25
  public function instanceUrl()
26
  {
27
- $result = parent::instanceUrl();
28
- if ($result) {
29
- return $result;
 
 
 
 
30
  } else {
31
- $id = $this['id'];
32
- $id = Util\Util::utf8($id);
33
- $extn = urlencode($id);
34
  $base = BitcoinReceiver::classUrl();
 
35
  return "$base/$extn";
36
  }
37
  }
38
-
39
- /**
40
- * @param string $id The ID of the Bitcoin Receiver to retrieve.
41
- * @param array|string|null $opts
42
- *
43
- * @return BitcoinReceiver
44
- */
45
- public static function retrieve($id, $opts = null)
46
- {
47
- return self::_retrieve($id, $opts);
48
- }
49
-
50
- /**
51
- * @param array|null $params
52
- * @param array|string|null $opts
53
- *
54
- * @return Collection of BitcoinReceivers
55
- */
56
- public static function all($params = null, $opts = null)
57
- {
58
- return self::_all($params, $opts);
59
- }
60
-
61
- /**
62
- * @param array|null $params
63
- * @param array|string|null $opts
64
- *
65
- * @return BitcoinReceiver The created Bitcoin Receiver item.
66
- */
67
- public static function create($params = null, $opts = null)
68
- {
69
- return self::_create($params, $opts);
70
- }
71
-
72
- /**
73
- * @param array|null $params
74
- * @param array|string|null $options
75
- *
76
- * @return BitcoinReceiver The refunded Bitcoin Receiver item.
77
- */
78
- public function refund($params = null, $options = null)
79
- {
80
- $url = $this->instanceUrl() . '/refund';
81
- list($response, $opts) = $this->_request('post', $url, $params, $options);
82
- $this->refreshFrom($response, $opts);
83
- return $this;
84
- }
85
  }
6
  * Class BitcoinReceiver
7
  *
8
  * @package Stripe
9
+ *
10
+ * @deprecated Bitcoin receivers are deprecated. Please use the sources API instead.
11
+ * @link https://stripe.com/docs/sources/bitcoin
12
  */
13
+ class BitcoinReceiver extends ApiResource
14
  {
15
+ const OBJECT_NAME = "bitcoin_receiver";
16
+
17
+ use ApiOperations\All;
18
+ use ApiOperations\Retrieve;
19
+
20
  /**
21
  * @return string The class URL for this resource. It needs to be special
22
  * cased because it doesn't fit into the standard resource pattern.
32
  */
33
  public function instanceUrl()
34
  {
35
+ if ($this['customer']) {
36
+ $base = Customer::classUrl();
37
+ $parent = $this['customer'];
38
+ $path = 'sources';
39
+ $parentExtn = urlencode(Util\Util::utf8($parent));
40
+ $extn = urlencode(Util\Util::utf8($this['id']));
41
+ return "$base/$parentExtn/$path/$extn";
42
  } else {
 
 
 
43
  $base = BitcoinReceiver::classUrl();
44
+ $extn = urlencode(Util\Util::utf8($this['id']));
45
  return "$base/$extn";
46
  }
47
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  }
app/api/Stripe/BitcoinTransaction.php CHANGED
@@ -9,5 +9,5 @@ namespace Stripe;
9
  */
10
  class BitcoinTransaction extends ApiResource
11
  {
12
-
13
  }
9
  */
10
  class BitcoinTransaction extends ApiResource
11
  {
12
+ const OBJECT_NAME = "bitcoin_transaction";
13
  }
app/api/Stripe/Capability.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Capability
7
+ *
8
+ * @package Stripe
9
+ *
10
+ * @property string $id
11
+ * @property string $object
12
+ * @property string $account
13
+ * @property bool $requested
14
+ * @property int $requested_at
15
+ * @property mixed $requirements
16
+ * @property string $status
17
+ */
18
+ class Capability extends ApiResource
19
+ {
20
+ const OBJECT_NAME = "capability";
21
+
22
+ use ApiOperations\Update;
23
+
24
+ /**
25
+ * Possible string representations of a capability's status.
26
+ * @link https://stripe.com/docs/api/capabilities/object#capability_object-status
27
+ */
28
+ const STATUS_ACTIVE = 'active';
29
+ const STATUS_INACTIVE = 'inactive';
30
+ const STATUS_PENDING = 'pending';
31
+ const STATUS_UNREQUESTED = 'unrequested';
32
+
33
+ /**
34
+ * @return string The API URL for this Stripe account reversal.
35
+ */
36
+ public function instanceUrl()
37
+ {
38
+ $id = $this['id'];
39
+ $account = $this['account'];
40
+ if (!$id) {
41
+ throw new Error\InvalidRequest(
42
+ "Could not determine which URL to request: " .
43
+ "class instance has invalid ID: $id",
44
+ null
45
+ );
46
+ }
47
+ $id = Util\Util::utf8($id);
48
+ $account = Util\Util::utf8($account);
49
+
50
+ $base = Account::classUrl();
51
+ $accountExtn = urlencode($account);
52
+ $extn = urlencode($id);
53
+ return "$base/$accountExtn/capabilities/$extn";
54
+ }
55
+
56
+ /**
57
+ * @param array|string $_id
58
+ * @param array|string|null $_opts
59
+ *
60
+ * @throws \Stripe\Error\InvalidRequest
61
+ */
62
+ public static function retrieve($_id, $_opts = null)
63
+ {
64
+ $msg = "Capabilities cannot be accessed without an account ID. " .
65
+ "Retrieve a Capability using \$account->retrieveCapability('acap_123') instead.";
66
+ throw new Error\InvalidRequest($msg, null);
67
+ }
68
+
69
+ /**
70
+ * @param string $_id
71
+ * @param array|null $_params
72
+ * @param array|string|null $_options
73
+ *
74
+ * @throws \Stripe\Error\InvalidRequest
75
+ */
76
+ public static function update($_id, $_params = null, $_options = null)
77
+ {
78
+ $msg = "Capabilities cannot be accessed without an account ID. " .
79
+ "Update a Capability using \$account->updateCapability('acap_123') instead.";
80
+ throw new Error\InvalidRequest($msg, null);
81
+ }
82
+ }
app/api/Stripe/Card.php CHANGED
@@ -5,9 +5,125 @@ namespace Stripe;
5
  /**
6
  * Class Card
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
- class Card extends ExternalAccount
11
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
5
  /**
6
  * Class Card
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $account
11
+ * @property string $address_city
12
+ * @property string $address_country
13
+ * @property string $address_line1
14
+ * @property string $address_line1_check
15
+ * @property string $address_line2
16
+ * @property string $address_state
17
+ * @property string $address_zip
18
+ * @property string $address_zip_check
19
+ * @property string[] $available_payout_methods
20
+ * @property string $brand
21
+ * @property string $country
22
+ * @property string $currency
23
+ * @property string $customer
24
+ * @property string $cvc_check
25
+ * @property bool $default_for_currency
26
+ * @property string $dynamic_last4
27
+ * @property int $exp_month
28
+ * @property int $exp_year
29
+ * @property string $fingerprint
30
+ * @property string $funding
31
+ * @property string $last4
32
+ * @property StripeObject $metadata
33
+ * @property string $name
34
+ * @property string $recipient
35
+ * @property string $tokenization_method
36
+ *
37
  * @package Stripe
38
  */
39
+ class Card extends ApiResource
40
  {
41
+ const OBJECT_NAME = "card";
42
+
43
+ use ApiOperations\Delete;
44
+ use ApiOperations\Update;
45
+
46
+ /**
47
+ * Possible string representations of the CVC check status.
48
+ * @link https://stripe.com/docs/api/cards/object#card_object-cvc_check
49
+ */
50
+ const CVC_CHECK_FAIL = 'fail';
51
+ const CVC_CHECK_PASS = 'pass';
52
+ const CVC_CHECK_UNAVAILABLE = 'unavailable';
53
+ const CVC_CHECK_UNCHECKED = 'unchecked';
54
+
55
+ /**
56
+ * Possible string representations of the funding of the card.
57
+ * @link https://stripe.com/docs/api/cards/object#card_object-funding
58
+ */
59
+ const FUNDING_CREDIT = 'credit';
60
+ const FUNDING_DEBIT = 'debit';
61
+ const FUNDING_PREPAID = 'prepaid';
62
+ const FUNDING_UNKNOWN = 'unknown';
63
+
64
+ /**
65
+ * Possible string representations of the tokenization method when using Apple Pay or Google Pay.
66
+ * @link https://stripe.com/docs/api/cards/object#card_object-tokenization_method
67
+ */
68
+ const TOKENIZATION_METHOD_APPLE_PAY = 'apple_pay';
69
+ const TOKENIZATION_METHOD_GOOGLE_PAY = 'google_pay';
70
+
71
+ /**
72
+ * @return string The instance URL for this resource. It needs to be special
73
+ * cased because cards are nested resources that may belong to different
74
+ * top-level resources.
75
+ */
76
+ public function instanceUrl()
77
+ {
78
+ if ($this['customer']) {
79
+ $base = Customer::classUrl();
80
+ $parent = $this['customer'];
81
+ $path = 'sources';
82
+ } elseif ($this['account']) {
83
+ $base = Account::classUrl();
84
+ $parent = $this['account'];
85
+ $path = 'external_accounts';
86
+ } elseif ($this['recipient']) {
87
+ $base = Recipient::classUrl();
88
+ $parent = $this['recipient'];
89
+ $path = 'cards';
90
+ } else {
91
+ $msg = "Cards cannot be accessed without a customer ID, account ID or recipient ID.";
92
+ throw new Error\InvalidRequest($msg, null);
93
+ }
94
+ $parentExtn = urlencode(Util\Util::utf8($parent));
95
+ $extn = urlencode(Util\Util::utf8($this['id']));
96
+ return "$base/$parentExtn/$path/$extn";
97
+ }
98
+
99
+ /**
100
+ * @param array|string $_id
101
+ * @param array|string|null $_opts
102
+ *
103
+ * @throws \Stripe\Error\InvalidRequest
104
+ */
105
+ public static function retrieve($_id, $_opts = null)
106
+ {
107
+ $msg = "Cards cannot be accessed without a customer, recipient or account ID. " .
108
+ "Retrieve a card using \$customer->sources->retrieve('card_id'), " .
109
+ "\$recipient->cards->retrieve('card_id'), or " .
110
+ "\$account->external_accounts->retrieve('card_id') instead.";
111
+ throw new Error\InvalidRequest($msg, null);
112
+ }
113
 
114
+ /**
115
+ * @param string $_id
116
+ * @param array|null $_params
117
+ * @param array|string|null $_options
118
+ *
119
+ * @throws \Stripe\Error\InvalidRequest
120
+ */
121
+ public static function update($_id, $_params = null, $_options = null)
122
+ {
123
+ $msg = "Cards cannot be accessed without a customer, recipient or account ID. " .
124
+ "Call save() on \$customer->sources->retrieve('card_id'), " .
125
+ "\$recipient->cards->retrieve('card_id'), or " .
126
+ "\$account->external_accounts->retrieve('card_id') instead.";
127
+ throw new Error\InvalidRequest($msg, null);
128
+ }
129
  }
app/api/Stripe/Charge.php CHANGED
@@ -9,91 +9,113 @@ namespace Stripe;
9
  * @property string $object
10
  * @property int $amount
11
  * @property int $amount_refunded
12
- * @property mixed $application_fee
 
 
13
  * @property string $balance_transaction
 
14
  * @property bool $captured
15
  * @property int $created
16
  * @property string $currency
17
  * @property string $customer
18
- * @property mixed $description
19
- * @property mixed $destination
20
- * @property mixed $dispute
21
- * @property mixed $failure_code
22
- * @property mixed $failure_message
23
  * @property mixed $fraud_details
24
- * @property mixed $invoice
25
  * @property bool $livemode
26
- * @property mixed $metadata
27
- * @property mixed $order
 
 
28
  * @property bool $paid
29
- * @property mixed $receipt_email
30
- * @property mixed $receipt_number
 
 
 
 
31
  * @property bool $refunded
32
- * @property mixed $refunds
 
33
  * @property mixed $shipping
34
  * @property mixed $source
35
- * @property mixed $source_transfer
36
- * @property mixed $statement_descriptor
37
  * @property string $status
 
 
 
38
  *
39
  * @package Stripe
40
  */
41
  class Charge extends ApiResource
42
  {
43
- /**
44
- * @param string $id The ID of the charge to retrieve.
45
- * @param array|string|null $options
46
- *
47
- * @return Charge
48
- */
49
- public static function retrieve($id, $options = null)
50
- {
51
- return self::_retrieve($id, $options);
52
- }
53
 
54
- /**
55
- * @param array|null $params
56
- * @param array|string|null $options
57
- *
58
- * @return Collection of Charges
59
- */
60
- public static function all($params = null, $options = null)
61
- {
62
- return self::_all($params, $options);
63
- }
64
 
65
  /**
66
- * @param array|null $params
67
- * @param array|string|null $options
68
- *
69
- * @return Charge The created charge.
70
  */
71
- public static function create($params = null, $options = null)
72
- {
73
- return self::_create($params, $options);
74
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
  /**
77
- * @param string $id The ID of the charge to update.
78
- * @param array|null $params
79
- * @param array|string|null $options
80
- *
81
- * @return Charge The updated charge.
82
  */
83
- public static function update($id, $params = null, $options = null)
84
- {
85
- return self::_update($id, $params, $options);
86
- }
87
-
88
- /**
89
- * @param array|string|null $options
90
- *
91
- * @return Charge The saved charge.
92
- */
93
- public function save($options = null)
94
- {
95
- return $this->_save($options);
96
- }
97
 
98
  /**
99
  * @param array|null $params
@@ -135,7 +157,7 @@ class Charge extends ApiResource
135
  {
136
  $url = $this->instanceUrl() . '/dispute';
137
  list($response, $opts) = $this->_request('post', $url, $params, $options);
138
- $this->refreshFrom(array('dispute' => $response), $opts, true);
139
  return $this->dispute;
140
  }
141
 
@@ -161,7 +183,7 @@ class Charge extends ApiResource
161
  */
162
  public function markAsFraudulent($opts = null)
163
  {
164
- $params = array('fraud_details' => array('user_report' => 'fraudulent'));
165
  $url = $this->instanceUrl();
166
  list($response, $opts) = $this->_request('post', $url, $params, $opts);
167
  $this->refreshFrom($response, $opts);
@@ -175,7 +197,7 @@ class Charge extends ApiResource
175
  */
176
  public function markAsSafe($opts = null)
177
  {
178
- $params = array('fraud_details' => array('user_report' => 'safe'));
179
  $url = $this->instanceUrl();
180
  list($response, $opts) = $this->_request('post', $url, $params, $opts);
181
  $this->refreshFrom($response, $opts);
9
  * @property string $object
10
  * @property int $amount
11
  * @property int $amount_refunded
12
+ * @property string $application
13
+ * @property string $application_fee
14
+ * @property int $application_fee_amount
15
  * @property string $balance_transaction
16
+ * @property mixed $billing_details
17
  * @property bool $captured
18
  * @property int $created
19
  * @property string $currency
20
  * @property string $customer
21
+ * @property string $description
22
+ * @property string $destination
23
+ * @property string $dispute
24
+ * @property string $failure_code
25
+ * @property string $failure_message
26
  * @property mixed $fraud_details
27
+ * @property string $invoice
28
  * @property bool $livemode
29
+ * @property StripeObject $metadata
30
+ * @property string $on_behalf_of
31
+ * @property string $order
32
+ * @property mixed $outcome
33
  * @property bool $paid
34
+ * @property string $payment_intent
35
+ * @property string $payment_method
36
+ * @property mixed $payment_method_details
37
+ * @property string $receipt_email
38
+ * @property string $receipt_number
39
+ * @property string $receipt_url
40
  * @property bool $refunded
41
+ * @property Collection $refunds
42
+ * @property string $review
43
  * @property mixed $shipping
44
  * @property mixed $source
45
+ * @property string $source_transfer
46
+ * @property string $statement_descriptor
47
  * @property string $status
48
+ * @property string $transfer
49
+ * @property mixed $transfer_data
50
+ * @property string $transfer_group
51
  *
52
  * @package Stripe
53
  */
54
  class Charge extends ApiResource
55
  {
56
+ const OBJECT_NAME = "charge";
 
 
 
 
 
 
 
 
 
57
 
58
+ use ApiOperations\All;
59
+ use ApiOperations\Create;
60
+ use ApiOperations\Retrieve;
61
+ use ApiOperations\Update;
 
 
 
 
 
 
62
 
63
  /**
64
+ * Possible string representations of decline codes.
65
+ * These strings are applicable to the decline_code property of the \Stripe\Error\Card exception.
66
+ * @link https://stripe.com/docs/declines/codes
 
67
  */
68
+ const DECLINED_APPROVE_WITH_ID = 'approve_with_id';
69
+ const DECLINED_CALL_ISSUER = 'call_issuer';
70
+ const DECLINED_CARD_NOT_SUPPORTED = 'card_not_supported';
71
+ const DECLINED_CARD_VELOCITY_EXCEEDED = 'card_velocity_exceeded';
72
+ const DECLINED_CURRENCY_NOT_SUPPORTED = 'currency_not_supported';
73
+ const DECLINED_DO_NOT_HONOR = 'do_not_honor';
74
+ const DECLINED_DO_NOT_TRY_AGAIN = 'do_not_try_again';
75
+ const DECLINED_DUPLICATED_TRANSACTION = 'duplicate_transaction';
76
+ const DECLINED_EXPIRED_CARD = 'expired_card';
77
+ const DECLINED_FRAUDULENT = 'fraudulent';
78
+ const DECLINED_GENERIC_DECLINE = 'generic_decline';
79
+ const DECLINED_INCORRECT_NUMBER = 'incorrect_number';
80
+ const DECLINED_INCORRECT_CVC = 'incorrect_cvc';
81
+ const DECLINED_INCORRECT_PIN = 'incorrect_pin';
82
+ const DECLINED_INCORRECT_ZIP = 'incorrect_zip';
83
+ const DECLINED_INSUFFICIENT_FUNDS = 'insufficient_funds';
84
+ const DECLINED_INVALID_ACCOUNT = 'invalid_account';
85
+ const DECLINED_INVALID_AMOUNT = 'invalid_amount';
86
+ const DECLINED_INVALID_CVC = 'invalid_cvc';
87
+ const DECLINED_INVALID_EXPIRY_YEAR = 'invalid_expiry_year';
88
+ const DECLINED_INVALID_NUMBER = 'invalid_number';
89
+ const DECLINED_INVALID_PIN = 'invalid_pin';
90
+ const DECLINED_ISSUER_NOT_AVAILABLE = 'issuer_not_available';
91
+ const DECLINED_LOST_CARD = 'lost_card';
92
+ const DECLINED_MERCHANT_BLACKLIST = 'merchant_blacklist';
93
+ const DECLINED_NEW_ACCOUNT_INFORMATION_AVAILABLE = 'new_account_information_available';
94
+ const DECLINED_NO_ACTION_TAKEN = 'no_action_taken';
95
+ const DECLINED_NOT_PERMITTED = 'not_permitted';
96
+ const DECLINED_PICKUP_CARD = 'pickup_card';
97
+ const DECLINED_PIN_TRY_EXCEEDED = 'pin_try_exceeded';
98
+ const DECLINED_PROCESSING_ERROR = 'processing_error';
99
+ const DECLINED_REENTER_TRANSACTION = 'reenter_transaction';
100
+ const DECLINED_RESTRICTED_CARD = 'restricted_card';
101
+ const DECLINED_REVOCATION_OF_ALL_AUTHORIZATIONS = 'revocation_of_all_authorizations';
102
+ const DECLINED_REVOCATION_OF_AUTHORIZATION = 'revocation_of_authorization';
103
+ const DECLINED_SECURITY_VIOLATION = 'security_violation';
104
+ const DECLINED_SERVICE_NOT_ALLOWED = 'service_not_allowed';
105
+ const DECLINED_STOLEN_CARD = 'stolen_card';
106
+ const DECLINED_STOP_PAYMENT_ORDER = 'stop_payment_order';
107
+ const DECLINED_TESTMODE_DECLINE = 'testmode_decline';
108
+ const DECLINED_TRANSACTION_NOT_ALLOWED = 'transaction_not_allowed';
109
+ const DECLINED_TRY_AGAIN_LATER = 'try_again_later';
110
+ const DECLINED_WITHDRAWAL_COUNT_LIMIT_EXCEEDED = 'withdrawal_count_limit_exceeded';
111
 
112
  /**
113
+ * Possible string representations of the status of the charge.
114
+ * @link https://stripe.com/docs/api/charges/object#charge_object-status
 
 
 
115
  */
116
+ const STATUS_FAILED = 'failed';
117
+ const STATUS_PENDING = 'pending';
118
+ const STATUS_SUCCEEDED = 'succeeded';
 
 
 
 
 
 
 
 
 
 
 
119
 
120
  /**
121
  * @param array|null $params
157
  {
158
  $url = $this->instanceUrl() . '/dispute';
159
  list($response, $opts) = $this->_request('post', $url, $params, $options);
160
+ $this->refreshFrom(['dispute' => $response], $opts, true);
161
  return $this->dispute;
162
  }
163
 
183
  */
184
  public function markAsFraudulent($opts = null)
185
  {
186
+ $params = ['fraud_details' => ['user_report' => 'fraudulent']];
187
  $url = $this->instanceUrl();
188
  list($response, $opts) = $this->_request('post', $url, $params, $opts);
189
  $this->refreshFrom($response, $opts);
197
  */
198
  public function markAsSafe($opts = null)
199
  {
200
+ $params = ['fraud_details' => ['user_report' => 'safe']];
201
  $url = $this->instanceUrl();
202
  list($response, $opts) = $this->_request('post', $url, $params, $opts);
203
  $this->refreshFrom($response, $opts);
app/api/Stripe/Checkout/Session.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Checkout;
4
+
5
+ /**
6
+ * Class Session
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $cancel_url
11
+ * @property string $client_reference_id
12
+ * @property string $customer
13
+ * @property string $customer_email
14
+ * @property mixed $display_items
15
+ * @property bool $livemode
16
+ * @property string $payment_intent
17
+ * @property string[] $payment_method_types
18
+ * @property string $submit_type
19
+ * @property string $subscription
20
+ * @property string $success_url
21
+ *
22
+ * @package Stripe
23
+ */
24
+ class Session extends \Stripe\ApiResource
25
+ {
26
+ const OBJECT_NAME = "checkout.session";
27
+
28
+ use \Stripe\ApiOperations\Create;
29
+ use \Stripe\ApiOperations\Retrieve;
30
+
31
+ /**
32
+ * Possible string representations of submit type.
33
+ * @link https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-submit_type
34
+ */
35
+ const SUBMIT_TYPE_AUTO = 'auto';
36
+ const SUBMIT_TYPE_BOOK = 'book';
37
+ const SUBMIT_TYPE_DONATE = 'donate';
38
+ const SUBMIT_TYPE_PAY = 'pay';
39
+ }
app/api/Stripe/Collection.php CHANGED
@@ -12,9 +12,21 @@ namespace Stripe;
12
  *
13
  * @package Stripe
14
  */
15
- class Collection extends ApiResource
16
  {
17
- protected $_requestParams = array();
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  public function setRequestParams($params)
20
  {
@@ -56,7 +68,16 @@ class Collection extends ApiResource
56
  }
57
 
58
  /**
59
- * @return AutoPagingIterator An iterator that can be used to iterate
 
 
 
 
 
 
 
 
 
60
  * across all objects across all pages. As page boundaries are
61
  * encountered, the next page will be fetched automatically for
62
  * continued iteration.
@@ -76,12 +97,11 @@ class Collection extends ApiResource
76
  if (isset($url['query'])) {
77
  // If the URL contains a query param, parse it out into $params so they
78
  // don't interact weirdly with each other.
79
- $query = array();
80
  parse_str($url['query'], $query);
81
- // PHP 5.2 doesn't support the ?: operator :(
82
- $params = array_merge($params ? $params : array(), $query);
83
  }
84
 
85
- return array($url['path'], $params);
86
  }
87
  }
12
  *
13
  * @package Stripe
14
  */
15
+ class Collection extends StripeObject implements \IteratorAggregate
16
  {
17
+ const OBJECT_NAME = "list";
18
+
19
+ use ApiOperations\Request;
20
+
21
+ protected $_requestParams = [];
22
+
23
+ /**
24
+ * @return string The base URL for the given class.
25
+ */
26
+ public static function baseUrl()
27
+ {
28
+ return Stripe::$apiBase;
29
+ }
30
 
31
  public function setRequestParams($params)
32
  {
68
  }
69
 
70
  /**
71
+ * @return \ArrayIterator An iterator that can be used to iterate
72
+ * across objects in the current page.
73
+ */
74
+ public function getIterator()
75
+ {
76
+ return new \ArrayIterator($this->data);
77
+ }
78
+
79
+ /**
80
+ * @return Util\AutoPagingIterator An iterator that can be used to iterate
81
  * across all objects across all pages. As page boundaries are
82
  * encountered, the next page will be fetched automatically for
83
  * continued iteration.
97
  if (isset($url['query'])) {
98
  // If the URL contains a query param, parse it out into $params so they
99
  // don't interact weirdly with each other.
100
+ $query = [];
101
  parse_str($url['query'], $query);
102
+ $params = array_merge($params ?: [], $query);
 
103
  }
104
 
105
+ return [$url['path'], $params];
106
  }
107
  }
app/api/Stripe/CountrySpec.php CHANGED
@@ -5,40 +5,21 @@ namespace Stripe;
5
  /**
6
  * Class CountrySpec
7
  *
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class CountrySpec extends ApiResource
11
  {
12
- /**
13
- * This is a special case because the country specs endpoint has an
14
- * underscore in it. The parent `className` function strips underscores.
15
- *
16
- * @return string The name of the class.
17
- */
18
- public static function className()
19
- {
20
- return 'country_spec';
21
- }
22
-
23
- /**
24
- * @param string $country The ISO country code of the country we retrieve the CountrySpec for.
25
- * @param array|string|null $opts
26
- *
27
- * @return CountrySpec
28
- */
29
- public static function retrieve($country, $opts = null)
30
- {
31
- return self::_retrieve($country, $opts);
32
- }
33
 
34
- /**
35
- * @param array|null $params
36
- * @param array|string|null $opts
37
- *
38
- * @return Collection of CountrySpecs
39
- */
40
- public static function all($params = null, $opts = null)
41
- {
42
- return self::_all($params, $opts);
43
- }
44
  }
5
  /**
6
  * Class CountrySpec
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $default_currency
11
+ * @property mixed $supported_bank_account_currencies
12
+ * @property string[] $supported_payment_currencies
13
+ * @property string[] $supported_payment_methods
14
+ * @property string[] $supported_transfer_countries
15
+ * @property mixed $verification_fields
16
+ *
17
  * @package Stripe
18
  */
19
  class CountrySpec extends ApiResource
20
  {
21
+ const OBJECT_NAME = "country_spec";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
+ use ApiOperations\All;
24
+ use ApiOperations\Retrieve;
 
 
 
 
 
 
 
 
25
  }
app/api/Stripe/Coupon.php CHANGED
@@ -5,73 +5,31 @@ namespace Stripe;
5
  /**
6
  * Class Coupon
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class Coupon extends ApiResource
11
  {
12
- /**
13
- * @param string $id The ID of the coupon to retrieve.
14
- * @param array|string|null $opts
15
- *
16
- * @return Coupon
17
- */
18
- public static function retrieve($id, $opts = null)
19
- {
20
- return self::_retrieve($id, $opts);
21
- }
22
-
23
- /**
24
- * @param array|null $params
25
- * @param array|string|null $opts
26
- *
27
- * @return Coupon The created coupon.
28
- */
29
- public static function create($params = null, $opts = null)
30
- {
31
- return self::_create($params, $opts);
32
- }
33
-
34
- /**
35
- * @param string $id The ID of the coupon to update.
36
- * @param array|null $params
37
- * @param array|string|null $options
38
- *
39
- * @return Coupon The updated coupon.
40
- */
41
- public static function update($id, $params = null, $options = null)
42
- {
43
- return self::_update($id, $params, $options);
44
- }
45
-
46
- /**
47
- * @param array|null $params
48
- * @param array|string|null $opts
49
- *
50
- * @return Coupon The deleted coupon.
51
- */
52
- public function delete($params = null, $opts = null)
53
- {
54
- return $this->_delete($params, $opts);
55
- }
56
-
57
- /**
58
- * @param array|string|null $opts
59
- *
60
- * @return Coupon The saved coupon.
61
- */
62
- public function save($opts = null)
63
- {
64
- return $this->_save($opts);
65
- }
66
 
67
- /**
68
- * @param array|null $params
69
- * @param array|string|null $opts
70
- *
71
- * @return Collection of Coupons
72
- */
73
- public static function all($params = null, $opts = null)
74
- {
75
- return self::_all($params, $opts);
76
- }
77
  }
5
  /**
6
  * Class Coupon
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount_off
11
+ * @property int $created
12
+ * @property string $currency
13
+ * @property string $duration
14
+ * @property int $duration_in_months
15
+ * @property bool $livemode
16
+ * @property int $max_redemptions
17
+ * @property StripeObject $metadata
18
+ * @property string $name
19
+ * @property float $percent_off
20
+ * @property int $redeem_by
21
+ * @property int $times_redeemed
22
+ * @property bool $valid
23
+ *
24
  * @package Stripe
25
  */
26
  class Coupon extends ApiResource
27
  {
28
+ const OBJECT_NAME = "coupon";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
+ use ApiOperations\All;
31
+ use ApiOperations\Create;
32
+ use ApiOperations\Delete;
33
+ use ApiOperations\Retrieve;
34
+ use ApiOperations\Update;
 
 
 
 
 
35
  }
app/api/Stripe/CreditNote.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class CreditNote
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property string $customer_balance_transaction
12
+ * @property int $created
13
+ * @property string $currency
14
+ * @property string $customer
15
+ * @property string $invoice
16
+ * @property bool $livemode
17
+ * @property string $memo
18
+ * @property StripeObject $metadata
19
+ * @property string $number
20
+ * @property string $pdf
21
+ * @property string $reason
22
+ * @property string $refund
23
+ * @property string $status
24
+ * @property string $type
25
+ *
26
+ * @package Stripe
27
+ */
28
+ class CreditNote extends ApiResource
29
+ {
30
+ const OBJECT_NAME = "credit_note";
31
+
32
+ use ApiOperations\All;
33
+ use ApiOperations\Create;
34
+ use ApiOperations\Retrieve;
35
+ use ApiOperations\Update;
36
+
37
+ /**
38
+ * Possible string representations of the credit note reason.
39
+ * @link https://stripe.com/docs/api/credit_notes/object#credit_note_object-reason
40
+ */
41
+ const REASON_DUPLICATE = 'duplicate';
42
+ const REASON_FRAUDULENT = 'fraudulent';
43
+ const REASON_ORDER_CHANGE = 'order_change';
44
+ const REASON_PRODUCT_UNSATISFACTORY = 'product_unsatisfactory';
45
+
46
+ /**
47
+ * Possible string representations of the credit note status.
48
+ * @link https://stripe.com/docs/api/credit_notes/object#credit_note_object-status
49
+ */
50
+ const STATUS_ISSUED = 'issued';
51
+ const STATUS_VOID = 'void';
52
+
53
+ /**
54
+ * Possible string representations of the credit note type.
55
+ * @link https://stripe.com/docs/api/credit_notes/object#credit_note_object-status
56
+ */
57
+ const TYPE_POST_PAYMENT = 'post_payment';
58
+ const TYPE_PRE_PAYMENT = 'pre_payment';
59
+
60
+ /**
61
+ * @param array|null $params
62
+ * @param array|string|null $opts
63
+ *
64
+ * @return CreditNote The voided credit note.
65
+ */
66
+ public function voidCreditNote($params = null, $opts = null)
67
+ {
68
+ $url = $this->instanceUrl() . '/void';
69
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
70
+ $this->refreshFrom($response, $opts);
71
+ return $this;
72
+ }
73
+ }
app/api/Stripe/Customer.php CHANGED
@@ -7,184 +7,313 @@ namespace Stripe;
7
  *
8
  * @property string $id
9
  * @property string $object
10
- * @property int $account_balance
11
- * @property string $business_vat_id
12
  * @property string $created
13
  * @property string $currency
14
  * @property string $default_source
15
  * @property bool $delinquent
16
  * @property string $description
17
- * @property mixed $discount
18
  * @property string $email
 
 
19
  * @property bool $livemode
20
- * @property array $metadata
 
 
 
21
  * @property mixed $shipping
22
  * @property Collection $sources
23
  * @property Collection $subscriptions
 
 
24
  *
25
  * @package Stripe
26
  */
27
  class Customer extends ApiResource
28
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  /**
30
- * @param string $id The ID of the customer to retrieve.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  * @param array|string|null $opts
32
  *
33
- * @return Customer
34
  */
35
- public static function retrieve($id, $opts = null)
36
  {
37
- return self::_retrieve($id, $opts);
38
  }
39
 
40
  /**
 
 
41
  * @param array|null $params
42
  * @param array|string|null $opts
43
  *
44
- * @return Collection of Customers
45
  */
46
- public static function all($params = null, $opts = null)
47
  {
48
- return self::_all($params, $opts);
49
  }
50
 
51
  /**
 
 
52
  * @param array|null $params
53
  * @param array|string|null $opts
54
  *
55
- * @return Customer The created customer.
56
  */
57
- public static function create($params = null, $opts = null)
58
  {
59
- return self::_create($params, $opts);
60
  }
61
 
62
  /**
63
- * @param string $id The ID of the customer to update.
 
64
  * @param array|null $params
65
- * @param array|string|null $options
66
  *
67
- * @return Customer The updated customer.
68
  */
69
- public static function update($id, $params = null, $options = null)
70
  {
71
- return self::_update($id, $params, $options);
72
  }
73
 
74
  /**
 
 
75
  * @param array|string|null $opts
76
  *
77
- * @return Customer The saved customer.
78
  */
79
- public function save($opts = null)
80
  {
81
- return $this->_save($opts);
82
  }
83
 
84
  /**
 
85
  * @param array|null $params
86
  * @param array|string|null $opts
87
  *
88
- * @return Customer The deleted customer.
89
  */
90
- public function delete($params = null, $opts = null)
91
  {
92
- return $this->_delete($params, $opts);
93
  }
94
 
95
  /**
 
 
96
  * @param array|null $params
 
97
  *
98
- * @return InvoiceItem The resulting invoice item.
99
  */
100
- public function addInvoiceItem($params = null)
101
  {
102
- if (!$params) {
103
- $params = array();
104
- }
105
- $params['customer'] = $this->id;
106
- $ii = InvoiceItem::create($params, $this->_opts);
107
- return $ii;
108
  }
109
 
110
  /**
 
 
111
  * @param array|null $params
 
112
  *
113
- * @return array An array of the customer's Invoices.
114
  */
115
- public function invoices($params = null)
116
  {
117
- if (!$params) {
118
- $params = array();
119
- }
120
- $params['customer'] = $this->id;
121
- $invoices = Invoice::all($params, $this->_opts);
122
- return $invoices;
123
  }
124
 
125
  /**
 
126
  * @param array|null $params
 
127
  *
128
- * @return array An array of the customer's InvoiceItems.
129
  */
130
- public function invoiceItems($params = null)
131
  {
132
- if (!$params) {
133
- $params = array();
134
- }
135
- $params['customer'] = $this->id;
136
- $iis = InvoiceItem::all($params, $this->_opts);
137
- return $iis;
138
  }
139
 
140
  /**
 
141
  * @param array|null $params
 
142
  *
143
- * @return array An array of the customer's Charges.
144
  */
145
- public function charges($params = null)
146
  {
147
- if (!$params) {
148
- $params = array();
149
- }
150
- $params['customer'] = $this->id;
151
- $charges = Charge::all($params, $this->_opts);
152
- return $charges;
153
  }
154
 
155
  /**
 
 
156
  * @param array|null $params
 
157
  *
158
- * @return Subscription The updated subscription.
159
  */
160
- public function updateSubscription($params = null)
161
  {
162
- $url = $this->instanceUrl() . '/subscription';
163
- list($response, $opts) = $this->_request('post', $url, $params);
164
- $this->refreshFrom(array('subscription' => $response), $opts, true);
165
- return $this->subscription;
166
  }
167
 
168
  /**
 
 
169
  * @param array|null $params
 
170
  *
171
- * @return Subscription The cancelled subscription.
 
172
  */
173
- public function cancelSubscription($params = null)
174
  {
175
- $url = $this->instanceUrl() . '/subscription';
176
- list($response, $opts) = $this->_request('delete', $url, $params);
177
- $this->refreshFrom(array('subscription' => $response), $opts, true);
178
- return $this->subscription;
179
  }
180
 
181
  /**
182
- * @return Customer The updated customer.
 
 
 
 
183
  */
184
- public function deleteDiscount()
185
  {
186
- $url = $this->instanceUrl() . '/discount';
187
- list($response, $opts) = $this->_request('delete', $url);
188
- $this->refreshFrom(array('discount' => null), $opts, true);
189
  }
190
  }
7
  *
8
  * @property string $id
9
  * @property string $object
10
+ * @property mixed $address
11
+ * @property int $balance
12
  * @property string $created
13
  * @property string $currency
14
  * @property string $default_source
15
  * @property bool $delinquent
16
  * @property string $description
17
+ * @property Discount $discount
18
  * @property string $email
19
+ * @property string $invoice_prefix
20
+ * @property mixed $invoice_settings
21
  * @property bool $livemode
22
+ * @property StripeObject $metadata
23
+ * @property string $name
24
+ * @property string $phone
25
+ * @property string[] preferred_locales
26
  * @property mixed $shipping
27
  * @property Collection $sources
28
  * @property Collection $subscriptions
29
+ * @property string $tax_exempt
30
+ * @property Collection $tax_ids
31
  *
32
  * @package Stripe
33
  */
34
  class Customer extends ApiResource
35
  {
36
+ const OBJECT_NAME = "customer";
37
+
38
+ use ApiOperations\All;
39
+ use ApiOperations\Create;
40
+ use ApiOperations\Delete;
41
+ use ApiOperations\NestedResource;
42
+ use ApiOperations\Retrieve;
43
+ use ApiOperations\Update;
44
+
45
+ /**
46
+ * Possible string representations of the customer's type of tax exemption.
47
+ * @link https://stripe.com/docs/api/customers/object#customer_object-tax_exempt
48
+ */
49
+ const TAX_EXEMPT_NONE = 'none';
50
+ const TAX_EXEMPT_EXEMPT = 'exempt';
51
+ const TAX_EXEMPT_REVERSE = 'reverse';
52
+
53
+ public static function getSavedNestedResources()
54
+ {
55
+ static $savedNestedResources = null;
56
+ if ($savedNestedResources === null) {
57
+ $savedNestedResources = new Util\Set([
58
+ 'source',
59
+ ]);
60
+ }
61
+ return $savedNestedResources;
62
+ }
63
+
64
+ const PATH_BALANCE_TRANSACTIONS = '/balance_transactions';
65
+ const PATH_SOURCES = '/sources';
66
+ const PATH_TAX_IDS = '/tax_ids';
67
+
68
+ /**
69
+ * @param array|null $params
70
+ *
71
+ * @return InvoiceItem The resulting invoice item.
72
+ */
73
+ public function addInvoiceItem($params = null)
74
+ {
75
+ $params = $params ?: [];
76
+ $params['customer'] = $this->id;
77
+ $ii = InvoiceItem::create($params, $this->_opts);
78
+ return $ii;
79
+ }
80
+
81
+ /**
82
+ * @param array|null $params
83
+ *
84
+ * @return array An array of the customer's Invoices.
85
+ */
86
+ public function invoices($params = null)
87
+ {
88
+ $params = $params ?: [];
89
+ $params['customer'] = $this->id;
90
+ $invoices = Invoice::all($params, $this->_opts);
91
+ return $invoices;
92
+ }
93
+
94
+ /**
95
+ * @param array|null $params
96
+ *
97
+ * @return array An array of the customer's InvoiceItems.
98
+ */
99
+ public function invoiceItems($params = null)
100
+ {
101
+ $params = $params ?: [];
102
+ $params['customer'] = $this->id;
103
+ $iis = InvoiceItem::all($params, $this->_opts);
104
+ return $iis;
105
+ }
106
+
107
+ /**
108
+ * @param array|null $params
109
+ *
110
+ * @return array An array of the customer's Charges.
111
+ */
112
+ public function charges($params = null)
113
+ {
114
+ $params = $params ?: [];
115
+ $params['customer'] = $this->id;
116
+ $charges = Charge::all($params, $this->_opts);
117
+ return $charges;
118
+ }
119
+
120
+ /**
121
+ * @param array|null $params
122
+ *
123
+ * @return Subscription The updated subscription.
124
+ */
125
+ public function updateSubscription($params = null)
126
+ {
127
+ $url = $this->instanceUrl() . '/subscription';
128
+ list($response, $opts) = $this->_request('post', $url, $params);
129
+ $this->refreshFrom(['subscription' => $response], $opts, true);
130
+ return $this->subscription;
131
+ }
132
+
133
  /**
134
+ * @param array|null $params
135
+ *
136
+ * @return Subscription The cancelled subscription.
137
+ */
138
+ public function cancelSubscription($params = null)
139
+ {
140
+ $url = $this->instanceUrl() . '/subscription';
141
+ list($response, $opts) = $this->_request('delete', $url, $params);
142
+ $this->refreshFrom(['subscription' => $response], $opts, true);
143
+ return $this->subscription;
144
+ }
145
+
146
+ /**
147
+ * @return Customer The updated customer.
148
+ */
149
+ public function deleteDiscount()
150
+ {
151
+ $url = $this->instanceUrl() . '/discount';
152
+ list($response, $opts) = $this->_request('delete', $url);
153
+ $this->refreshFrom(['discount' => null], $opts, true);
154
+ }
155
+
156
+ /**
157
+ * @param string|null $id The ID of the customer on which to create the source.
158
+ * @param array|null $params
159
  * @param array|string|null $opts
160
  *
161
+ * @return ApiResource
162
  */
163
+ public static function createSource($id, $params = null, $opts = null)
164
  {
165
+ return self::_createNestedResource($id, static::PATH_SOURCES, $params, $opts);
166
  }
167
 
168
  /**
169
+ * @param string|null $id The ID of the customer to which the source belongs.
170
+ * @param string|null $sourceId The ID of the source to retrieve.
171
  * @param array|null $params
172
  * @param array|string|null $opts
173
  *
174
+ * @return ApiResource
175
  */
176
+ public static function retrieveSource($id, $sourceId, $params = null, $opts = null)
177
  {
178
+ return self::_retrieveNestedResource($id, static::PATH_SOURCES, $sourceId, $params, $opts);
179
  }
180
 
181
  /**
182
+ * @param string|null $id The ID of the customer to which the source belongs.
183
+ * @param string|null $sourceId The ID of the source to update.
184
  * @param array|null $params
185
  * @param array|string|null $opts
186
  *
187
+ * @return ApiResource
188
  */
189
+ public static function updateSource($id, $sourceId, $params = null, $opts = null)
190
  {
191
+ return self::_updateNestedResource($id, static::PATH_SOURCES, $sourceId, $params, $opts);
192
  }
193
 
194
  /**
195
+ * @param string|null $id The ID of the customer to which the source belongs.
196
+ * @param string|null $sourceId The ID of the source to delete.
197
  * @param array|null $params
198
+ * @param array|string|null $opts
199
  *
200
+ * @return ApiResource
201
  */
202
+ public static function deleteSource($id, $sourceId, $params = null, $opts = null)
203
  {
204
+ return self::_deleteNestedResource($id, static::PATH_SOURCES, $sourceId, $params, $opts);
205
  }
206
 
207
  /**
208
+ * @param string|null $id The ID of the customer on which to retrieve the sources.
209
+ * @param array|null $params
210
  * @param array|string|null $opts
211
  *
212
+ * @return Collection The list of sources.
213
  */
214
+ public static function allSources($id, $params = null, $opts = null)
215
  {
216
+ return self::_allNestedResources($id, static::PATH_SOURCES, $params, $opts);
217
  }
218
 
219
  /**
220
+ * @param string|null $id The ID of the customer on which to create the tax id.
221
  * @param array|null $params
222
  * @param array|string|null $opts
223
  *
224
+ * @return ApiResource
225
  */
226
+ public static function createTaxId($id, $params = null, $opts = null)
227
  {
228
+ return self::_createNestedResource($id, static::PATH_TAX_IDS, $params, $opts);
229
  }
230
 
231
  /**
232
+ * @param string|null $id The ID of the customer to which the tax id belongs.
233
+ * @param string|null $taxIdId The ID of the tax id to retrieve.
234
  * @param array|null $params
235
+ * @param array|string|null $opts
236
  *
237
+ * @return ApiResource
238
  */
239
+ public static function retrieveTaxId($id, $taxIdId, $params = null, $opts = null)
240
  {
241
+ return self::_retrieveNestedResource($id, static::PATH_TAX_IDS, $taxIdId, $params, $opts);
 
 
 
 
 
242
  }
243
 
244
  /**
245
+ * @param string|null $id The ID of the customer to which the tax id belongs.
246
+ * @param string|null $taxIdId The ID of the tax id to delete.
247
  * @param array|null $params
248
+ * @param array|string|null $opts
249
  *
250
+ * @return ApiResource
251
  */
252
+ public static function deleteTaxId($id, $taxIdId, $params = null, $opts = null)
253
  {
254
+ return self::_deleteNestedResource($id, static::PATH_TAX_IDS, $taxIdId, $params, $opts);
 
 
 
 
 
255
  }
256
 
257
  /**
258
+ * @param string|null $id The ID of the customer on which to retrieve the tax ids.
259
  * @param array|null $params
260
+ * @param array|string|null $opts
261
  *
262
+ * @return Collection The list of tax ids.
263
  */
264
+ public static function allTaxIds($id, $params = null, $opts = null)
265
  {
266
+ return self::_allNestedResources($id, static::PATH_TAX_IDS, $params, $opts);
 
 
 
 
 
267
  }
268
 
269
  /**
270
+ * @param string|null $id The ID of the customer on which to create the balance transaction.
271
  * @param array|null $params
272
+ * @param array|string|null $opts
273
  *
274
+ * @return ApiResource
275
  */
276
+ public static function createBalanceTransaction($id, $params = null, $opts = null)
277
  {
278
+ return self::_createNestedResource($id, static::PATH_BALANCE_TRANSACTIONS, $params, $opts);
 
 
 
 
 
279
  }
280
 
281
  /**
282
+ * @param string|null $id The ID of the customer to which the balance transaction belongs.
283
+ * @param string|null $balanceTransactionId The ID of the balance transaction to retrieve.
284
  * @param array|null $params
285
+ * @param array|string|null $opts
286
  *
287
+ * @return ApiResource
288
  */
289
+ public static function retrieveBalanceTransaction($id, $balanceTransactionId, $params = null, $opts = null)
290
  {
291
+ return self::_retrieveNestedResource($id, static::PATH_BALANCE_TRANSACTIONS, $balanceTransactionId, $params, $opts);
 
 
 
292
  }
293
 
294
  /**
295
+ * @param string|null $id The ID of the customer on which to update the balance transaction.
296
+ * @param string|null $balanceTransactionId The ID of the balance transaction to update.
297
  * @param array|null $params
298
+ * @param array|string|null $opts
299
  *
300
+ *
301
+ * @return ApiResource
302
  */
303
+ public static function updateBalanceTransaction($id, $balanceTransactionId, $params = null, $opts = null)
304
  {
305
+ return self::_updateNestedResource($id, static::PATH_BALANCE_TRANSACTIONS, $balanceTransactionId, $params, $opts);
 
 
 
306
  }
307
 
308
  /**
309
+ * @param string|null $id The ID of the customer on which to retrieve the customer balance transactions.
310
+ * @param array|null $params
311
+ * @param array|string|null $opts
312
+ *
313
+ * @return Collection The list of customer balance transactions.
314
  */
315
+ public static function allBalanceTransactions($id, $params = null, $opts = null)
316
  {
317
+ return self::_allNestedResources($id, static::PATH_BALANCE_TRANSACTIONS, $params, $opts);
 
 
318
  }
319
  }
app/api/Stripe/CustomerBalanceTransaction.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class CustomerBalanceTransaction
7
+ *
8
+ * @package Stripe
9
+ *
10
+ * @property string $id
11
+ * @property string $object
12
+ * @property int $amount
13
+ * @property string $credit_note
14
+ * @property int $created
15
+ * @property string $currency
16
+ * @property string $customer
17
+ * @property string $description
18
+ * @property int $ending_balance
19
+ * @property string $invoice
20
+ * @property bool $livemode
21
+ * @property StripeObject $metadata
22
+ * @property string $type
23
+ */
24
+ class CustomerBalanceTransaction extends ApiResource
25
+ {
26
+ const OBJECT_NAME = "customer_balance_transaction";
27
+
28
+ /**
29
+ * Possible string representations of a balance transaction's type.
30
+ * @link https://stripe.com/docs/api/customers/customer_balance_transaction_object#customer_balance_transaction_object-type
31
+ */
32
+ const TYPE_ADJUSTEMENT = 'adjustment';
33
+ const TYPE_APPLIED_TO_INVOICE = 'applied_to_invoice';
34
+ const TYPE_CREDIT_NOTE = 'credit_note';
35
+ const TYPE_INITIAL = 'initial';
36
+ const TYPE_INVOICE_TOO_LARGE = 'invoice_too_large';
37
+ const TYPE_INVOICE_TOO_SMALL = 'invoice_too_small';
38
+ const TYPE_UNSPENT_RECEIVER_CREDIT = 'unspent_receiver_credit';
39
+
40
+ /**
41
+ * @return string The API URL for this balance transaction.
42
+ */
43
+ public function instanceUrl()
44
+ {
45
+ $id = $this['id'];
46
+ $customer = $this['customer'];
47
+ if (!$id) {
48
+ throw new Error\InvalidRequest(
49
+ "Could not determine which URL to request: class instance has invalid ID: $id",
50
+ null
51
+ );
52
+ }
53
+ $id = Util\Util::utf8($id);
54
+ $customer = Util\Util::utf8($customer);
55
+
56
+ $base = Customer::classUrl();
57
+ $customerExtn = urlencode($customer);
58
+ $extn = urlencode($id);
59
+ return "$base/$customerExtn/balance_transactions/$extn";
60
+ }
61
+
62
+ /**
63
+ * @param array|string $_id
64
+ * @param array|string|null $_opts
65
+ *
66
+ * @throws \Stripe\Error\InvalidRequest
67
+ */
68
+ public static function retrieve($_id, $_opts = null)
69
+ {
70
+ $msg = "Customer Balance Transactions cannot be accessed without a customer ID. " .
71
+ "Retrieve a balance transaction using Customer::retrieveBalanceTransaction('cus_123', 'cbtxn_123') instead.";
72
+ throw new Error\InvalidRequest($msg, null);
73
+ }
74
+
75
+ /**
76
+ * @param string $_id
77
+ * @param array|null $_params
78
+ * @param array|string|null $_options
79
+ *
80
+ * @throws \Stripe\Error\InvalidRequest
81
+ */
82
+ public static function update($_id, $_params = null, $_options = null)
83
+ {
84
+ $msg = "Customer Balance Transactions cannot be accessed without a customer ID. " .
85
+ "Update a balance transaction using Customer::updateBalanceTransaction('cus_123', 'cbtxn_123', \$params) instead.";
86
+ throw new Error\InvalidRequest($msg, null);
87
+ }
88
+ }
app/api/Stripe/Discount.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Discount
7
+ *
8
+ * @property string $object
9
+ * @property Coupon $coupon
10
+ * @property string $customer
11
+ * @property int $end
12
+ * @property int $start
13
+ * @property string $subscription
14
+ *
15
+ * @package Stripe
16
+ */
17
+ class Discount extends StripeObject
18
+ {
19
+ const OBJECT_NAME = "discount";
20
+ }
app/api/Stripe/Dispute.php CHANGED
@@ -8,7 +8,7 @@ namespace Stripe;
8
  * @property string $id
9
  * @property string $object
10
  * @property int $amount
11
- * @property mixed $balance_transactions
12
  * @property string $charge
13
  * @property int $created
14
  * @property string $currency
@@ -16,7 +16,7 @@ namespace Stripe;
16
  * @property mixed $evidence_details
17
  * @property bool $is_charge_refundable
18
  * @property bool $livemode
19
- * @property mixed $metadata
20
  * @property string $reason
21
  * @property string $status
22
  *
@@ -24,49 +24,43 @@ namespace Stripe;
24
  */
25
  class Dispute extends ApiResource
26
  {
27
- /**
28
- * @param string $id The ID of the dispute to retrieve.
29
- * @param array|string|null $options
30
- *
31
- * @return Dispute
32
- */
33
- public static function retrieve($id, $options = null)
34
- {
35
- return self::_retrieve($id, $options);
36
- }
37
 
38
- /**
39
- * @param array|null $params
40
- * @param array|string|null $options
41
- *
42
- * @return array An array of Disputes.
43
- */
44
- public static function all($params = null, $options = null)
45
- {
46
- return self::_all($params, $options);
47
- }
48
 
49
  /**
50
- * @param string $id The ID of the dispute to update.
51
- * @param array|null $params
52
- * @param array|string|null $options
53
- *
54
- * @return Dispute The updated dispute.
55
  */
56
- public static function update($id, $params = null, $options = null)
57
- {
58
- return self::_update($id, $params, $options);
59
- }
 
 
 
 
 
 
 
 
 
 
60
 
61
  /**
62
- * @param array|string|null $options
63
- *
64
- * @return Dispute The saved charge.
65
  */
66
- public function save($options = null)
67
- {
68
- return $this->_save($options);
69
- }
 
 
 
 
70
 
71
  /**
72
  * @param array|string|null $options
8
  * @property string $id
9
  * @property string $object
10
  * @property int $amount
11
+ * @property BalanceTransaction[] $balance_transactions
12
  * @property string $charge
13
  * @property int $created
14
  * @property string $currency
16
  * @property mixed $evidence_details
17
  * @property bool $is_charge_refundable
18
  * @property bool $livemode
19
+ * @property StripeObject $metadata
20
  * @property string $reason
21
  * @property string $status
22
  *
24
  */
25
  class Dispute extends ApiResource
26
  {
27
+ const OBJECT_NAME = "dispute";
 
 
 
 
 
 
 
 
 
28
 
29
+ use ApiOperations\All;
30
+ use ApiOperations\Retrieve;
31
+ use ApiOperations\Update;
 
 
 
 
 
 
 
32
 
33
  /**
34
+ * Possible string representations of dispute reasons.
35
+ * @link https://stripe.com/docs/api#dispute_object
 
 
 
36
  */
37
+ const REASON_BANK_CANNOT_PROCESS = 'bank_cannot_process';
38
+ const REASON_CHECK_RETURNED = 'check_returned';
39
+ const REASON_CREDIT_NOT_PROCESSED = 'credit_not_processed';
40
+ const REASON_CUSTOMER_INITIATED = 'customer_initiated';
41
+ const REASON_DEBIT_NOT_AUTHORIZED = 'debit_not_authorized';
42
+ const REASON_DUPLICATE = 'duplicate';
43
+ const REASON_FRAUDULENT = 'fraudulent';
44
+ const REASON_GENERAL = 'general';
45
+ const REASON_INCORRECT_ACCOUNT_DETAILS = 'incorrect_account_details';
46
+ const REASON_INSUFFICIENT_FUNDS = 'insufficient_funds';
47
+ const REASON_PRODUCT_NOT_RECEIVED = 'product_not_received';
48
+ const REASON_PRODUCT_UNACCEPTABLE = 'product_unacceptable';
49
+ const REASON_SUBSCRIPTION_CANCELED = 'subscription_canceled';
50
+ const REASON_UNRECOGNIZED = 'unrecognized';
51
 
52
  /**
53
+ * Possible string representations of dispute statuses.
54
+ * @link https://stripe.com/docs/api#dispute_object
 
55
  */
56
+ const STATUS_CHARGE_REFUNDED = 'charge_refunded';
57
+ const STATUS_LOST = 'lost';
58
+ const STATUS_NEEDS_RESPONSE = 'needs_response';
59
+ const STATUS_UNDER_REVIEW = 'under_review';
60
+ const STATUS_WARNING_CLOSED = 'warning_closed';
61
+ const STATUS_WARNING_NEEDS_RESPONSE = 'warning_needs_response';
62
+ const STATUS_WARNING_UNDER_REVIEW = 'warning_under_review';
63
+ const STATUS_WON = 'won';
64
 
65
  /**
66
  * @param array|string|null $options
app/api/Stripe/EphemeralKey.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class EphemeralKey
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $created
11
+ * @property int $expires
12
+ * @property bool $livemode
13
+ * @property string $secret
14
+ * @property array $associated_objects
15
+ *
16
+ * @package Stripe
17
+ */
18
+ class EphemeralKey extends ApiResource
19
+ {
20
+ const OBJECT_NAME = "ephemeral_key";
21
+
22
+ use ApiOperations\Create {
23
+ create as protected _create;
24
+ }
25
+ use ApiOperations\Delete;
26
+
27
+ /**
28
+ * @param array|null $params
29
+ * @param array|string|null $opts
30
+ *
31
+ * @return EphemeralKey The created key.
32
+ */
33
+ public static function create($params = null, $opts = null)
34
+ {
35
+ if (!$opts['stripe_version']) {
36
+ throw new \InvalidArgumentException('stripe_version must be specified to create an ephemeral key');
37
+ }
38
+ return self::_create($params, $opts);
39
+ }
40
+ }
app/api/Stripe/Error/Base.php CHANGED
@@ -20,11 +20,20 @@ abstract class Base extends Exception
20
  $this->httpHeaders = $httpHeaders;
21
  $this->requestId = null;
22
 
 
 
 
 
23
  if ($httpHeaders && isset($httpHeaders['Request-Id'])) {
24
  $this->requestId = $httpHeaders['Request-Id'];
25
  }
26
  }
27
 
 
 
 
 
 
28
  public function getHttpStatus()
29
  {
30
  return $this->httpStatus;
20
  $this->httpHeaders = $httpHeaders;
21
  $this->requestId = null;
22
 
23
+ // TODO: make this a proper constructor argument in the next major
24
+ // release.
25
+ $this->stripeCode = isset($jsonBody["error"]["code"]) ? $jsonBody["error"]["code"] : null;
26
+
27
  if ($httpHeaders && isset($httpHeaders['Request-Id'])) {
28
  $this->requestId = $httpHeaders['Request-Id'];
29
  }
30
  }
31
 
32
+ public function getStripeCode()
33
+ {
34
+ return $this->stripeCode;
35
+ }
36
+
37
  public function getHttpStatus()
38
  {
39
  return $this->httpStatus;
app/api/Stripe/Error/Card.php CHANGED
@@ -15,12 +15,16 @@ class Card extends Base
15
  ) {
16
  parent::__construct($message, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
17
  $this->stripeParam = $stripeParam;
 
 
 
18
  $this->stripeCode = $stripeCode;
19
 
20
  // This one is not like the others because it was added later and we're
21
  // trying to do our best not to change the public interface of this class'
22
- // constructor. We should consider changing its implementation on the
23
- // next major version bump of this library.
 
24
  $this->declineCode = isset($jsonBody["error"]["decline_code"]) ? $jsonBody["error"]["decline_code"] : null;
25
  }
26
 
@@ -29,11 +33,6 @@ class Card extends Base
29
  return $this->declineCode;
30
  }
31
 
32
- public function getStripeCode()
33
- {
34
- return $this->stripeCode;
35
- }
36
-
37
  public function getStripeParam()
38
  {
39
  return $this->stripeParam;
15
  ) {
16
  parent::__construct($message, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
17
  $this->stripeParam = $stripeParam;
18
+
19
+ // TODO: once Error\Base accepts the error code as an argument, pass it
20
+ // in the call to parent::__construct() and stop setting it here.
21
  $this->stripeCode = $stripeCode;
22
 
23
  // This one is not like the others because it was added later and we're
24
  // trying to do our best not to change the public interface of this class'
25
+ // constructor.
26
+ // TODO: make this a proper constructor argument in the next major
27
+ // release.
28
  $this->declineCode = isset($jsonBody["error"]["decline_code"]) ? $jsonBody["error"]["decline_code"] : null;
29
  }
30
 
33
  return $this->declineCode;
34
  }
35
 
 
 
 
 
 
36
  public function getStripeParam()
37
  {
38
  return $this->stripeParam;
app/api/Stripe/Error/Idempotency.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ class Idempotency extends Base
6
+ {
7
+ }
app/api/Stripe/Error/OAuth/InvalidClient.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error\OAuth;
4
+
5
+ /**
6
+ * InvalidClient is raised when authentication fails.
7
+ */
8
+ class InvalidClient extends OAuthBase
9
+ {
10
+ }
app/api/Stripe/Error/OAuth/InvalidGrant.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error\OAuth;
4
+
5
+ /**
6
+ * InvalidGrant is raised when a specified code doesn't exist, is
7
+ * expired, has been used, or doesn't belong to you; a refresh token doesn't
8
+ * exist, or doesn't belong to you; or if an API key's mode (live or test)
9
+ * doesn't match the mode of a code or refresh token.
10
+ */
11
+ class InvalidGrant extends OAuthBase
12
+ {
13
+ }
app/api/Stripe/Error/OAuth/InvalidRequest.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error\OAuth;
4
+
5
+ /**
6
+ * InvalidRequest is raised when a code, refresh token, or grant type
7
+ * parameter is not provided, but was required.
8
+ */
9
+ class InvalidRequest extends OAuthBase
10
+ {
11
+ }
app/api/Stripe/Error/OAuth/InvalidScope.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error\OAuth;
4
+
5
+ /**
6
+ * InvalidScope is raised when an invalid scope parameter is provided.
7
+ */
8
+ class InvalidScope extends OAuthBase
9
+ {
10
+ }
app/api/Stripe/Error/OAuth/OAuthBase.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error\OAuth;
4
+
5
+ class OAuthBase extends \Stripe\Error\Base
6
+ {
7
+ public function __construct(
8
+ $code,
9
+ $description,
10
+ $httpStatus = null,
11
+ $httpBody = null,
12
+ $jsonBody = null,
13
+ $httpHeaders = null
14
+ ) {
15
+ parent::__construct($description, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
16
+ $this->errorCode = $code;
17
+ }
18
+
19
+ public function getErrorCode()
20
+ {
21
+ return $this->errorCode;
22
+ }
23
+ }
app/api/Stripe/Error/OAuth/UnsupportedGrantType.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error\OAuth;
4
+
5
+ /**
6
+ * UnsupportedGrantType is raised when an unuspported grant type
7
+ * parameter is specified.
8
+ */
9
+ class UnsupportedGrantType extends OAuthBase
10
+ {
11
+ }
app/api/Stripe/Error/OAuth/UnsupportedResponseType.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error\OAuth;
4
+
5
+ /**
6
+ * UnsupportedResponseType is raised when an unsupported response type
7
+ * parameter is specified.
8
+ */
9
+ class UnsupportedResponseType extends OAuthBase
10
+ {
11
+ }
app/api/Stripe/Error/SignatureVerification.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ class SignatureVerification extends Base
6
+ {
7
+ public function __construct(
8
+ $message,
9
+ $sigHeader,
10
+ $httpBody = null
11
+ ) {
12
+ parent::__construct($message, null, $httpBody, null, null);
13
+ $this->sigHeader = $sigHeader;
14
+ }
15
+
16
+ public function getSigHeader()
17
+ {
18
+ return $this->sigHeader;
19
+ }
20
+ }
app/api/Stripe/Event.php CHANGED
@@ -7,37 +7,161 @@ namespace Stripe;
7
  *
8
  * @property string $id
9
  * @property string $object
 
10
  * @property string $api_version
11
- * @property int $created
12
- * @property mixed $data
13
- * @property bool $livemode
14
- * @property int $pending_webhooks
15
- * @property string $request
16
  * @property string $type
17
  *
18
  * @package Stripe
19
  */
20
  class Event extends ApiResource
21
  {
22
- /**
23
- * @param string $id The ID of the event to retrieve.
24
- * @param array|string|null $opts
25
- *
26
- * @return Event
27
- */
28
- public static function retrieve($id, $opts = null)
29
- {
30
- return self::_retrieve($id, $opts);
31
- }
32
 
33
  /**
34
- * @param array|null $params
35
- * @param array|string|null $opts
36
- *
37
- * @return Collection of Events
38
  */
39
- public static function all($params = null, $opts = null)
40
- {
41
- return self::_all($params, $opts);
42
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  }
7
  *
8
  * @property string $id
9
  * @property string $object
10
+ * @property string $account
11
  * @property string $api_version
12
+ * @property int $created
13
+ * @property mixed $data
14
+ * @property bool $livemode
15
+ * @property int $pending_webhooks
16
+ * @property mixed $request
17
  * @property string $type
18
  *
19
  * @package Stripe
20
  */
21
  class Event extends ApiResource
22
  {
23
+ const OBJECT_NAME = "event";
 
 
 
 
 
 
 
 
 
24
 
25
  /**
26
+ * Possible string representations of event types.
27
+ * @link https://stripe.com/docs/api#event_types
 
 
28
  */
29
+ const ACCOUNT_UPDATED = 'account.updated';
30
+ const ACCOUNT_APPLICATION_AUTHORIZED = 'account.application.authorized';
31
+ const ACCOUNT_APPLICATION_DEAUTHORIZED = 'account.application.deauthorized';
32
+ const ACCOUNT_EXTERNAL_ACCOUNT_CREATED = 'account.external_account.created';
33
+ const ACCOUNT_EXTERNAL_ACCOUNT_DELETED = 'account.external_account.deleted';
34
+ const ACCOUNT_EXTERNAL_ACCOUNT_UPDATED = 'account.external_account.updated';
35
+ const APPLICATION_FEE_CREATED = 'application_fee.created';
36
+ const APPLICATION_FEE_REFUNDED = 'application_fee.refunded';
37
+ const APPLICATION_FEE_REFUND_UPDATED = 'application_fee.refund.updated';
38
+ const BALANCE_AVAILABLE = 'balance.available';
39
+ const CHARGE_CAPTURED = 'charge.captured';
40
+ const CHARGE_EXPIRED = 'charge.expired';
41
+ const CHARGE_FAILED = 'charge.failed';
42
+ const CHARGE_PENDING = 'charge.pending';
43
+ const CHARGE_REFUNDED = 'charge.refunded';
44
+ const CHARGE_SUCCEEDED = 'charge.succeeded';
45
+ const CHARGE_UPDATED = 'charge.updated';
46
+ const CHARGE_DISPUTE_CLOSED = 'charge.dispute.closed';
47
+ const CHARGE_DISPUTE_CREATED = 'charge.dispute.created';
48
+ const CHARGE_DISPUTE_FUNDS_REINSTATED = 'charge.dispute.funds_reinstated';
49
+ const CHARGE_DISPUTE_FUNDS_WITHDRAWN = 'charge.dispute.funds_withdrawn';
50
+ const CHARGE_DISPUTE_UPDATED = 'charge.dispute.updated';
51
+ const CHARGE_REFUND_UPDATED = 'charge.refund.updated';
52
+ const CHECKOUT_SESSION_COMPLETED = 'checkout.session.completed';
53
+ const COUPON_CREATED = 'coupon.created';
54
+ const COUPON_DELETED = 'coupon.deleted';
55
+ const COUPON_UPDATED = 'coupon.updated';
56
+ const CREDIT_NOTE_CREATED = 'credit_note.created';
57
+ const CREDIT_NOTE_UPDATED = 'credit_note.updated';
58
+ const CREDIT_NOTE_VOIDED = 'credit_note.voided';
59
+ const CUSTOMER_CREATED = 'customer.created';
60
+ const CUSTOMER_DELETED = 'customer.deleted';
61
+ const CUSTOMER_UPDATED = 'customer.updated';
62
+ const CUSTOMER_DISCOUNT_CREATED = 'customer.discount.created';
63
+ const CUSTOMER_DISCOUNT_DELETED = 'customer.discount.deleted';
64
+ const CUSTOMER_DISCOUNT_UPDATED = 'customer.discount.updated';
65
+ const CUSTOMER_SOURCE_CREATED = 'customer.source.created';
66
+ const CUSTOMER_SOURCE_DELETED = 'customer.source.deleted';
67
+ const CUSTOMER_SOURCE_EXPIRING = 'customer.source.expiring';
68
+ const CUSTOMER_SOURCE_UPDATED = 'customer.source.updated';
69
+ const CUSTOMER_SUBSCRIPTION_CREATED = 'customer.subscription.created';
70
+ const CUSTOMER_SUBSCRIPTION_DELETED = 'customer.subscription.deleted';
71
+ const CUSTOMER_SUBSCRIPTION_TRIAL_WILL_END = 'customer.subscription.trial_will_end';
72
+ const CUSTOMER_SUBSCRIPTION_UPDATED = 'customer.subscription.updated';
73
+ const FILE_CREATED = 'file.created';
74
+ const INVOICE_CREATED = 'invoice.created';
75
+ const INVOICE_DELETED = 'invoice.deleted';
76
+ const INVOICE_FINALIZED = 'invoice.finalized';
77
+ const INVOICE_MARKED_UNCOLLECTIBLE = 'invoice.marked_uncollectible';
78
+ const INVOICE_PAYMENT_ACTION_REQUIRED = 'invoice.payment_action_required';
79
+ const INVOICE_PAYMENT_FAILED = 'invoice.payment_failed';
80
+ const INVOICE_PAYMENT_SUCCEEDED = 'invoice.payment_succeeded';
81
+ const INVOICE_SENT = 'invoice.sent';
82
+ const INVOICE_UPCOMING = 'invoice.upcoming';
83
+ const INVOICE_UPDATED = 'invoice.updated';
84
+ const INVOICE_VOIDED = 'invoice.voided';
85
+ const INVOICEITEM_CREATED = 'invoiceitem.created';
86
+ const INVOICEITEM_DELETED = 'invoiceitem.deleted';
87
+ const INVOICEITEM_UPDATED = 'invoiceitem.updated';
88
+ const ISSUER_FRAUD_RECORD_CREATED = 'issuer_fraud_record.created';
89
+ const ISSUING_AUTHORIZATION_CREATED = 'issuing_authorization.created';
90
+ const ISSUING_AUTHORIZATION_REQUEST = 'issuing_authorization.request';
91
+ const ISSUING_AUTHORIZATION_UPDATED = 'issuing_authorization.updated';
92
+ const ISSUING_CARD_CREATED = 'issuing_card.created';
93
+ const ISSUING_CARD_UPDATED = 'issuing_card.updated';
94
+ const ISSUING_CARDHOLDER_CREATED = 'issuing_cardholder.created';
95
+ const ISSUING_CARDHOLDER_UPDATED = 'issuing_cardholder.updated';
96
+ const ISSUING_DISPUTE_CREATED = 'issuing_dispute.created';
97
+ const ISSUING_DISPUTE_UPDATED = 'issuing_dispute.updated';
98
+ const ISSUING_TRANSACTION_CREATED = 'issuing_transaction.created';
99
+ const ISSUING_TRANSACTION_UPDATED = 'issuing_transaction.updated';
100
+ const ORDER_CREATED = 'order.created';
101
+ const ORDER_PAYMENT_FAILED = 'order.payment_failed';
102
+ const ORDER_PAYMENT_SUCCEEDED = 'order.payment_succeeded';
103
+ const ORDER_UPDATED = 'order.updated';
104
+ const ORDER_RETURN_CREATED = 'order_return.created';
105
+ const PAYMENT_INTENT_AMOUNT_CAPTURABLE_UPDATED = 'payment_intent.amount_capturable_updated';
106
+ const PAYMENT_INTENT_CREATED = 'payment_intent.created';
107
+ const PAYMENT_INTENT_PAYMENT_FAILED = 'payment_intent.payment_failed';
108
+ const PAYMENT_INTENT_SUCCEEDED = 'payment_intent.succeeded';
109
+ const PAYMENT_METHOD_ATTACHED = 'payment_method.attached';
110
+ const PAYMENT_METHOD_CARD_AUTOMATICALLY_UPDATED = 'payment_method.card_automatically_updated';
111
+ const PAYMENT_METHOD_DETACHED = 'payment_method.detached';
112
+ const PAYMENT_METHOD_UPDATED = 'payment_method.updated';
113
+ const PAYOUT_CANCELED = 'payout.canceled';
114
+ const PAYOUT_CREATED = 'payout.created';
115
+ const PAYOUT_FAILED = 'payout.failed';
116
+ const PAYOUT_PAID = 'payout.paid';
117
+ const PAYOUT_UPDATED = 'payout.updated';
118
+ const PERSON_CREATED = 'person.created';
119
+ const PERSON_DELETED = 'person.deleted';
120
+ const PERSON_UPDATED = 'person.updated';
121
+ const PING = 'ping';
122
+ const PLAN_CREATED = 'plan.created';
123
+ const PLAN_DELETED = 'plan.deleted';
124
+ const PLAN_UPDATED = 'plan.updated';
125
+ const PRODUCT_CREATED = 'product.created';
126
+ const PRODUCT_DELETED = 'product.deleted';
127
+ const PRODUCT_UPDATED = 'product.updated';
128
+ const RECIPIENT_CREATED = 'recipient.created';
129
+ const RECIPIENT_DELETED = 'recipient.deleted';
130
+ const RECIPIENT_UPDATED = 'recipient.updated';
131
+ const REPORTING_REPORT_RUN_FAILED = 'reporting.report_run.failed';
132
+ const REPORTING_REPORT_RUN_SUCCEEDED = 'reporting.report_run.succeeded';
133
+ const REPORTING_REPORT_TYPE_UPDATED = 'reporting.report_type.updated';
134
+ const REVIEW_CLOSED = 'review.closed';
135
+ const REVIEW_OPENED = 'review.opened';
136
+ const SIGMA_SCHEDULED_QUERY_RUN_CREATED = 'sigma.scheduled_query_run.created';
137
+ const SKU_CREATED = 'sku.created';
138
+ const SKU_DELETED = 'sku.deleted';
139
+ const SKU_UPDATED = 'sku.updated';
140
+ const SOURCE_CANCELED = 'source.canceled';
141
+ const SOURCE_CHARGEABLE = 'source.chargeable';
142
+ const SOURCE_FAILED = 'source.failed';
143
+ const SOURCE_MANDATE_NOTIFICATION = 'source.mandate_notification';
144
+ const SOURCE_REFUND_ATTRIBUTES_REQUIRED = 'source.refund_attributes_required';
145
+ const SOURCE_TRANSACTION_CREATED = 'source.transaction.created';
146
+ const SOURCE_TRANSACTION_UPDATED = 'source.transaction.updated';
147
+ const SUBSCRIPTION_SCHEDULE_ABORTED = 'subscription_schedule.aborted';
148
+ const SUBSCRIPTION_SCHEDULE_CANCELED = 'subscription_schedule.canceled';
149
+ const SUBSCRIPTION_SCHEDULE_COMPLETED = 'subscription_schedule.completed';
150
+ const SUBSCRIPTION_SCHEDULE_CREATED = 'subscription_schedule.created';
151
+ const SUBSCRIPTION_SCHEDULE_EXPIRING = 'subscription_schedule.expiring';
152
+ const SUBSCRIPTION_SCHEDULE_RELEASED = 'subscription_schedule.released';
153
+ const SUBSCRIPTION_SCHEDULE_UPDATED = 'subscription_schedule.updated';
154
+ const TAX_RATE_CREATED = 'tax_rate.created';
155
+ const TAX_RATE_UPDATED = 'tax_rate.updated';
156
+ const TOPUP_CANCELED = 'topup.canceled';
157
+ const TOPUP_CREATED = 'topup.created';
158
+ const TOPUP_FAILED = 'topup.failed';
159
+ const TOPUP_REVERSED = 'topup.reversed';
160
+ const TOPUP_SUCCEEDED = 'topup.succeeded';
161
+ const TRANSFER_CREATED = 'transfer.created';
162
+ const TRANSFER_REVERSED = 'transfer.reversed';
163
+ const TRANSFER_UPDATED = 'transfer.updated';
164
+
165
+ use ApiOperations\All;
166
+ use ApiOperations\Retrieve;
167
  }
app/api/Stripe/ExchangeRate.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class ExchangeRate
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class ExchangeRate extends ApiResource
11
+ {
12
+ const OBJECT_NAME = "exchange_rate";
13
+
14
+ use ApiOperations\All;
15
+ use ApiOperations\Retrieve;
16
+ }
app/api/Stripe/ExternalAccount.php DELETED
@@ -1,89 +0,0 @@
1
- <?php
2
-
3
- namespace Stripe;
4
-
5
- /**
6
- * Class ExternalAccount
7
- *
8
- * @package Stripe
9
- */
10
- abstract class ExternalAccount extends ApiResource
11
- {
12
- /**
13
- * @return string The instance URL for this resource. It needs to be special
14
- * cased because it doesn't fit into the standard resource pattern.
15
- */
16
- public function instanceUrl()
17
- {
18
- $id = $this['id'];
19
- if (!$id) {
20
- $class = get_class($this);
21
- $msg = "Could not determine which URL to request: $class instance "
22
- . "has invalid ID: $id";
23
- throw new Error\InvalidRequest($msg, null);
24
- }
25
-
26
- if ($this['customer']) {
27
- $parent = $this['customer'];
28
- $base = Customer::classUrl();
29
- $path = 'sources';
30
- } elseif ($this['account']) {
31
- $parent = $this['account'];
32
- $base = Account::classUrl();
33
- $path = 'external_accounts';
34
- } elseif ($this['recipient']) {
35
- $parent = $this['recipient'];
36
- $base = Recipient::classUrl();
37
- $path = 'cards';
38
- } else {
39
- return null;
40
- }
41
-
42
- $parent = Util\Util::utf8($parent);
43
- $id = Util\Util::utf8($id);
44
-
45
- $parentExtn = urlencode($parent);
46
- $extn = urlencode($id);
47
- return "$base/$parentExtn/$path/$extn";
48
- }
49
-
50
- /**
51
- * @param array|null $params
52
- * @param array|string|null $opts
53
- *
54
- * @return ExternalAccount The deleted external account.
55
- */
56
- public function delete($params = null, $opts = null)
57
- {
58
- return $this->_delete($params, $opts);
59
- }
60
-
61
- /**
62
- * @param array|string|null $opts
63
- *
64
- * @return ExternalAccount The saved external account.
65
- */
66
- public function save($opts = null)
67
- {
68
- return $this->_save($opts);
69
- }
70
-
71
- /**
72
- * @param array|null $params
73
- * @param array|string|null $opts
74
- *
75
- * @return ExternalAccount The verified (or not) external account.
76
- */
77
- public function verify($params = null, $opts = null)
78
- {
79
- if ($this['customer']) {
80
- $url = $this->instanceUrl() . '/verify';
81
- list($response, $options) = $this->_request('post', $url, $params, $opts);
82
- $this->refreshFrom($response, $options);
83
- return $this;
84
- } else {
85
- $message = 'Only customer external accounts can be verified in this manner.';
86
- throw new Error\Api($message);
87
- }
88
- }
89
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/api/Stripe/File.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class File
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $created
11
+ * @property string $filename
12
+ * @property Collection $links
13
+ * @property string $purpose
14
+ * @property int $size
15
+ * @property string $title
16
+ * @property string $type
17
+ * @property string $url
18
+ *
19
+ * @package Stripe
20
+ */
21
+ class File extends ApiResource
22
+ {
23
+ // This resource can have two different object names. In latter API
24
+ // versions, only `file` is used, but since stripe-php may be used with
25
+ // any API version, we need to support deserializing the older
26
+ // `file_upload` object into the same class.
27
+ const OBJECT_NAME = "file";
28
+ const OBJECT_NAME_ALT = "file_upload";
29
+
30
+ use ApiOperations\All;
31
+ use ApiOperations\Create {
32
+ create as protected _create;
33
+ }
34
+ use ApiOperations\Retrieve;
35
+
36
+ public static function classUrl()
37
+ {
38
+ return '/v1/files';
39
+ }
40
+
41
+ /**
42
+ * @param array|null $params
43
+ * @param array|string|null $options
44
+ *
45
+ * @return \Stripe\File The created resource.
46
+ */
47
+ public static function create($params = null, $options = null)
48
+ {
49
+ $opts = \Stripe\Util\RequestOptions::parse($options);
50
+ if (is_null($opts->apiBase)) {
51
+ $opts->apiBase = Stripe::$apiUploadBase;
52
+ }
53
+ // Manually flatten params, otherwise curl's multipart encoder will
54
+ // choke on nested arrays.
55
+ // TODO: use array_column() once we drop support for PHP 5.4
56
+ $flatParams = [];
57
+ foreach (\Stripe\Util\Util::flattenParams($params) as $pair) {
58
+ $flatParams[$pair[0]] = $pair[1];
59
+ }
60
+ return static::_create($flatParams, $opts);
61
+ }
62
+ }
app/api/Stripe/FileLink.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class FileLink
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $created
11
+ * @property bool $expired
12
+ * @property int $expires_at
13
+ * @property string $file
14
+ * @property bool $livemode
15
+ * @property StripeObject $metadata
16
+ * @property string $url
17
+ *
18
+ * @package Stripe
19
+ */
20
+ class FileLink extends ApiResource
21
+ {
22
+ const OBJECT_NAME = "file_link";
23
+
24
+ use ApiOperations\All;
25
+ use ApiOperations\Create;
26
+ use ApiOperations\Retrieve;
27
+ use ApiOperations\Update;
28
+ }
app/api/Stripe/FileUpload.php CHANGED
@@ -2,60 +2,5 @@
2
 
3
  namespace Stripe;
4
 
5
- /**
6
- * Class FileUpload
7
- *
8
- * @property string $id
9
- * @property string $object
10
- * @property int $created
11
- * @property string $purpose
12
- * @property int $size
13
- * @property string $type
14
- *
15
- * @package Stripe
16
- */
17
- class FileUpload extends ApiResource
18
- {
19
- public static function baseUrl()
20
- {
21
- return Stripe::$apiUploadBase;
22
- }
23
-
24
- public static function className()
25
- {
26
- return 'file';
27
- }
28
-
29
- /**
30
- * @param string $id The ID of the file upload to retrieve.
31
- * @param array|string|null $opts
32
- *
33
- * @return FileUpload
34
- */
35
- public static function retrieve($id, $opts = null)
36
- {
37
- return self::_retrieve($id, $opts);
38
- }
39
-
40
- /**
41
- * @param array|null $params
42
- * @param array|string|null $opts
43
- *
44
- * @return FileUpload The created file upload.
45
- */
46
- public static function create($params = null, $opts = null)
47
- {
48
- return self::_create($params, $opts);
49
- }
50
-
51
- /**
52
- * @param array|null $params
53
- * @param array|string|null $opts
54
- *
55
- * @return Collection of FileUploads
56
- */
57
- public static function all($params = null, $opts = null)
58
- {
59
- return self::_all($params, $opts);
60
- }
61
- }
2
 
3
  namespace Stripe;
4
 
5
+ // For backwards compatibility, the `File` class is aliased to `FileUpload`.
6
+ class_alias('Stripe\\File', 'Stripe\\FileUpload');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/api/Stripe/HttpClient/ClientInterface.php CHANGED
@@ -11,8 +11,11 @@ interface ClientInterface
11
  * @param array $params KV pairs for parameters. Can be nested for arrays and hashes
12
  * @param boolean $hasFile Whether or not $params references a file (via an @ prefix or
13
  * CurlFile)
14
- * @throws Error\Api & Error\ApiConnection
15
- * @return array($rawBody, $httpStatusCode, $httpHeader)
 
 
 
16
  */
17
  public function request($method, $absUrl, $headers, $params, $hasFile);
18
  }
11
  * @param array $params KV pairs for parameters. Can be nested for arrays and hashes
12
  * @param boolean $hasFile Whether or not $params references a file (via an @ prefix or
13
  * CurlFile)
14
+ *
15
+ * @throws \Stripe\Error\Api
16
+ * @throws \Stripe\Error\ApiConnection
17
+ * @return array An array whose first element is raw request body, second
18
+ * element is HTTP status code and third array of HTTP headers.
19
  */
20
  public function request($method, $absUrl, $headers, $params, $hasFile);
21
  }
app/api/Stripe/HttpClient/CurlClient.php CHANGED
@@ -22,6 +22,10 @@ if (!defined('CURL_SSLVERSION_TLSv1_2')) {
22
  }
23
  // @codingStandardsIgnoreEnd
24
 
 
 
 
 
25
  class CurlClient implements ClientInterface
26
  {
27
  private static $instance;
@@ -36,6 +40,14 @@ class CurlClient implements ClientInterface
36
 
37
  protected $defaultOptions;
38
 
 
 
 
 
 
 
 
 
39
  /**
40
  * CurlClient constructor.
41
  *
@@ -49,9 +61,31 @@ class CurlClient implements ClientInterface
49
  *
50
  * @param array|callable|null $defaultOptions
51
  */
52
- public function __construct($defaultOptions = null)
53
  {
54
  $this->defaultOptions = $defaultOptions;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
  public function getDefaultOptions()
@@ -59,6 +93,43 @@ class CurlClient implements ClientInterface
59
  return $this->defaultOptions;
60
  }
61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  // USER DEFINED TIMEOUTS
63
 
64
  const DEFAULT_TIMEOUT = 80;
@@ -93,10 +164,9 @@ class CurlClient implements ClientInterface
93
 
94
  public function request($method, $absUrl, $headers, $params, $hasFile)
95
  {
96
- $curl = curl_init();
97
  $method = strtolower($method);
98
 
99
- $opts = array();
100
  if (is_callable($this->defaultOptions)) { // call defaultOptions callback, set options to return value
101
  $opts = call_user_func_array($this->defaultOptions, func_get_args());
102
  if (!is_array($opts)) {
@@ -106,6 +176,8 @@ class CurlClient implements ClientInterface
106
  $opts = $this->defaultOptions;
107
  }
108
 
 
 
109
  if ($method == 'get') {
110
  if ($hasFile) {
111
  throw new Error\Api(
@@ -114,24 +186,32 @@ class CurlClient implements ClientInterface
114
  }
115
  $opts[CURLOPT_HTTPGET] = 1;
116
  if (count($params) > 0) {
117
- $encoded = self::encode($params);
118
  $absUrl = "$absUrl?$encoded";
119
  }
120
  } elseif ($method == 'post') {
121
  $opts[CURLOPT_POST] = 1;
122
- $opts[CURLOPT_POSTFIELDS] = $hasFile ? $params : self::encode($params);
123
  } elseif ($method == 'delete') {
124
  $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
125
  if (count($params) > 0) {
126
- $encoded = self::encode($params);
127
  $absUrl = "$absUrl?$encoded";
128
  }
129
  } else {
130
  throw new Error\Api("Unrecognized method $method");
131
  }
132
 
 
 
 
 
 
 
 
 
133
  // Create a callback to capture HTTP headers for the response
134
- $rheaders = array();
135
  $headerCallback = function ($curl, $header_line) use (&$rheaders) {
136
  // Ignore the HTTP request line (HTTP/1.1 200 OK)
137
  if (strpos($header_line, ":") === false) {
@@ -163,47 +243,70 @@ class CurlClient implements ClientInterface
163
  $opts[CURLOPT_TIMEOUT] = $this->timeout;
164
  $opts[CURLOPT_HEADERFUNCTION] = $headerCallback;
165
  $opts[CURLOPT_HTTPHEADER] = $headers;
 
 
 
 
166
 
167
- curl_setopt_array($curl, $opts);
168
- $rbody = curl_exec($curl);
169
-
170
- if (!defined('CURLE_SSL_CACERT_BADFILE')) {
171
- define('CURLE_SSL_CACERT_BADFILE', 77); // constant not defined in PHP
172
  }
173
 
174
- $errno = curl_errno($curl);
175
- if ($errno == CURLE_SSL_CACERT ||
176
- $errno == CURLE_SSL_PEER_CERTIFICATE ||
177
- $errno == CURLE_SSL_CACERT_BADFILE
178
- ) {
179
- array_push(
180
- $headers,
181
- 'X-Stripe-Client-Info: {"ca":"using Stripe-supplied CA bundle"}'
182
- );
183
- $cert = self::caBundle();
184
- curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
185
- curl_setopt($curl, CURLOPT_CAINFO, $cert);
186
- $rbody = curl_exec($curl);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
 
189
  if ($rbody === false) {
190
- $errno = curl_errno($curl);
191
- $message = curl_error($curl);
192
- curl_close($curl);
193
- $this->handleCurlError($absUrl, $errno, $message);
194
  }
195
 
196
- $rcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
197
- curl_close($curl);
198
- return array($rbody, $rcode, $rheaders);
199
  }
200
 
201
  /**
202
- * @param number $errno
 
203
  * @param string $message
 
204
  * @throws Error\ApiConnection
205
  */
206
- private function handleCurlError($url, $errno, $message)
207
  {
208
  switch ($errno) {
209
  case CURLE_COULDNT_CONNECT:
@@ -228,52 +331,130 @@ class CurlClient implements ClientInterface
228
  $msg .= " let us know at support@stripe.com.";
229
 
230
  $msg .= "\n\n(Network error [errno $errno]: $message)";
 
 
 
 
 
231
  throw new Error\ApiConnection($msg);
232
  }
233
 
234
- private static function caBundle()
 
 
 
 
 
 
 
 
 
235
  {
236
- return dirname(__FILE__) . '/data/ca-certificates.crt';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  }
238
 
239
  /**
240
- * @param array $arr An map of param keys to values.
241
- * @param string|null $prefix
242
- *
243
- * Only public for testability, should not be called outside of CurlClient
244
- *
245
- * @return string A querystring, essentially.
246
  */
247
- public static function encode($arr, $prefix = null)
248
  {
249
- if (!is_array($arr)) {
250
- return $arr;
 
 
 
 
 
 
 
 
 
 
251
  }
 
252
 
253
- $r = array();
254
- foreach ($arr as $k => $v) {
255
- if (is_null($v)) {
256
- continue;
257
- }
 
 
 
 
 
 
 
258
 
259
- if ($prefix) {
260
- if ($k !== null && (!is_int($k) || is_array($v))) {
261
- $k = $prefix."[".$k."]";
262
- } else {
263
- $k = $prefix."[]";
264
- }
265
- }
 
 
 
 
 
266
 
267
- if (is_array($v)) {
268
- $enc = self::encode($v, $k);
269
- if ($enc) {
270
- $r[] = $enc;
271
- }
272
- } else {
273
- $r[] = urlencode($k)."=".urlencode($v);
 
 
 
 
 
274
  }
275
  }
276
 
277
- return implode("&", $r);
278
  }
279
  }
22
  }
23
  // @codingStandardsIgnoreEnd
24
 
25
+ if (!defined('CURL_HTTP_VERSION_2TLS')) {
26
+ define('CURL_HTTP_VERSION_2TLS', 4);
27
+ }
28
+
29
  class CurlClient implements ClientInterface
30
  {
31
  private static $instance;
40
 
41
  protected $defaultOptions;
42
 
43
+ protected $userAgentInfo;
44
+
45
+ protected $enablePersistentConnections = null;
46
+
47
+ protected $enableHttp2 = null;
48
+
49
+ protected $curlHandle = null;
50
+
51
  /**
52
  * CurlClient constructor.
53
  *
61
  *
62
  * @param array|callable|null $defaultOptions
63
  */
64
+ public function __construct($defaultOptions = null, $randomGenerator = null)
65
  {
66
  $this->defaultOptions = $defaultOptions;
67
+ $this->randomGenerator = $randomGenerator ?: new Util\RandomGenerator();
68
+ $this->initUserAgentInfo();
69
+
70
+ // TODO: curl_reset requires PHP >= 5.5.0. Once we drop support for PHP 5.4, we can simply
71
+ // initialize this to true.
72
+ $this->enablePersistentConnections = function_exists('curl_reset');
73
+
74
+ $this->enableHttp2 = $this->canSafelyUseHttp2();
75
+ }
76
+
77
+ public function __destruct()
78
+ {
79
+ $this->closeCurlHandle();
80
+ }
81
+
82
+ public function initUserAgentInfo()
83
+ {
84
+ $curlVersion = curl_version();
85
+ $this->userAgentInfo = [
86
+ 'httplib' => 'curl ' . $curlVersion['version'],
87
+ 'ssllib' => $curlVersion['ssl_version'],
88
+ ];
89
  }
90
 
91
  public function getDefaultOptions()
93
  return $this->defaultOptions;
94
  }
95
 
96
+ public function getUserAgentInfo()
97
+ {
98
+ return $this->userAgentInfo;
99
+ }
100
+
101
+ /**
102
+ * @return boolean
103
+ */
104
+ public function getEnablePersistentConnections()
105
+ {
106
+ return $this->enablePersistentConnections;
107
+ }
108
+
109
+ /**
110
+ * @param boolean $enable
111
+ */
112
+ public function setEnablePersistentConnections($enable)
113
+ {
114
+ $this->enablePersistentConnections = $enable;
115
+ }
116
+
117
+ /**
118
+ * @return boolean
119
+ */
120
+ public function getEnableHttp2()
121
+ {
122
+ return $this->enableHttp2;
123
+ }
124
+
125
+ /**
126
+ * @param boolean $enable
127
+ */
128
+ public function setEnableHttp2($enable)
129
+ {
130
+ $this->enableHttp2 = $enable;
131
+ }
132
+
133
  // USER DEFINED TIMEOUTS
134
 
135
  const DEFAULT_TIMEOUT = 80;
164
 
165
  public function request($method, $absUrl, $headers, $params, $hasFile)
166
  {
 
167
  $method = strtolower($method);
168
 
169
+ $opts = [];
170
  if (is_callable($this->defaultOptions)) { // call defaultOptions callback, set options to return value
171
  $opts = call_user_func_array($this->defaultOptions, func_get_args());
172
  if (!is_array($opts)) {
176
  $opts = $this->defaultOptions;
177
  }
178
 
179
+ $params = Util\Util::objectsToIds($params);
180
+
181
  if ($method == 'get') {
182
  if ($hasFile) {
183
  throw new Error\Api(
186
  }
187
  $opts[CURLOPT_HTTPGET] = 1;
188
  if (count($params) > 0) {
189
+ $encoded = Util\Util::encodeParameters($params);
190
  $absUrl = "$absUrl?$encoded";
191
  }
192
  } elseif ($method == 'post') {
193
  $opts[CURLOPT_POST] = 1;
194
+ $opts[CURLOPT_POSTFIELDS] = $hasFile ? $params : Util\Util::encodeParameters($params);
195
  } elseif ($method == 'delete') {
196
  $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
197
  if (count($params) > 0) {
198
+ $encoded = Util\Util::encodeParameters($params);
199
  $absUrl = "$absUrl?$encoded";
200
  }
201
  } else {
202
  throw new Error\Api("Unrecognized method $method");
203
  }
204
 
205
+ // It is only safe to retry network failures on POST requests if we
206
+ // add an Idempotency-Key header
207
+ if (($method == 'post') && (Stripe::$maxNetworkRetries > 0)) {
208
+ if (!$this->hasHeader($headers, "Idempotency-Key")) {
209
+ array_push($headers, 'Idempotency-Key: ' . $this->randomGenerator->uuid());
210
+ }
211
+ }
212
+
213
  // Create a callback to capture HTTP headers for the response
214
+ $rheaders = new Util\CaseInsensitiveArray();
215
  $headerCallback = function ($curl, $header_line) use (&$rheaders) {
216
  // Ignore the HTTP request line (HTTP/1.1 200 OK)
217
  if (strpos($header_line, ":") === false) {
243
  $opts[CURLOPT_TIMEOUT] = $this->timeout;
244
  $opts[CURLOPT_HEADERFUNCTION] = $headerCallback;
245
  $opts[CURLOPT_HTTPHEADER] = $headers;
246
+ $opts[CURLOPT_CAINFO] = Stripe::getCABundlePath();
247
+ if (!Stripe::getVerifySslCerts()) {
248
+ $opts[CURLOPT_SSL_VERIFYPEER] = false;
249
+ }
250
 
251
+ if (!isset($opts[CURLOPT_HTTP_VERSION]) && $this->getEnableHttp2()) {
252
+ // For HTTPS requests, enable HTTP/2, if supported
253
+ $opts[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2TLS;
 
 
254
  }
255
 
256
+ list($rbody, $rcode) = $this->executeRequestWithRetries($opts, $absUrl);
257
+
258
+ return [$rbody, $rcode, $rheaders];
259
+ }
260
+
261
+ /**
262
+ * @param array $opts cURL options
263
+ */
264
+ private function executeRequestWithRetries($opts, $absUrl)
265
+ {
266
+ $numRetries = 0;
267
+
268
+ while (true) {
269
+ $rcode = 0;
270
+ $errno = 0;
271
+
272
+ $this->resetCurlHandle();
273
+ curl_setopt_array($this->curlHandle, $opts);
274
+ $rbody = curl_exec($this->curlHandle);
275
+
276
+ if ($rbody === false) {
277
+ $errno = curl_errno($this->curlHandle);
278
+ $message = curl_error($this->curlHandle);
279
+ } else {
280
+ $rcode = curl_getinfo($this->curlHandle, CURLINFO_HTTP_CODE);
281
+ }
282
+ if (!$this->getEnablePersistentConnections()) {
283
+ $this->closeCurlHandle();
284
+ }
285
+
286
+ if ($this->shouldRetry($errno, $rcode, $numRetries)) {
287
+ $numRetries += 1;
288
+ $sleepSeconds = $this->sleepTime($numRetries);
289
+ usleep(intval($sleepSeconds * 1000000));
290
+ } else {
291
+ break;
292
+ }
293
  }
294
 
295
  if ($rbody === false) {
296
+ $this->handleCurlError($absUrl, $errno, $message, $numRetries);
 
 
 
297
  }
298
 
299
+ return [$rbody, $rcode];
 
 
300
  }
301
 
302
  /**
303
+ * @param string $url
304
+ * @param int $errno
305
  * @param string $message
306
+ * @param int $numRetries
307
  * @throws Error\ApiConnection
308
  */
309
+ private function handleCurlError($url, $errno, $message, $numRetries)
310
  {
311
  switch ($errno) {
312
  case CURLE_COULDNT_CONNECT:
331
  $msg .= " let us know at support@stripe.com.";
332
 
333
  $msg .= "\n\n(Network error [errno $errno]: $message)";
334
+
335
+ if ($numRetries > 0) {
336
+ $msg .= "\n\nRequest was retried $numRetries times.";
337
+ }
338
+
339
  throw new Error\ApiConnection($msg);
340
  }
341
 
342
+ /**
343
+ * Checks if an error is a problem that we should retry on. This includes both
344
+ * socket errors that may represent an intermittent problem and some special
345
+ * HTTP statuses.
346
+ * @param int $errno
347
+ * @param int $rcode
348
+ * @param int $numRetries
349
+ * @return bool
350
+ */
351
+ private function shouldRetry($errno, $rcode, $numRetries)
352
  {
353
+ if ($numRetries >= Stripe::getMaxNetworkRetries()) {
354
+ return false;
355
+ }
356
+
357
+ // Retry on timeout-related problems (either on open or read).
358
+ if ($errno === CURLE_OPERATION_TIMEOUTED) {
359
+ return true;
360
+ }
361
+
362
+ // Destination refused the connection, the connection was reset, or a
363
+ // variety of other connection failures. This could occur from a single
364
+ // saturated server, so retry in case it's intermittent.
365
+ if ($errno === CURLE_COULDNT_CONNECT) {
366
+ return true;
367
+ }
368
+
369
+ // 409 conflict
370
+ if ($rcode === 409) {
371
+ return true;
372
+ }
373
+
374
+ return false;
375
+ }
376
+
377
+ private function sleepTime($numRetries)
378
+ {
379
+ // Apply exponential backoff with $initialNetworkRetryDelay on the
380
+ // number of $numRetries so far as inputs. Do not allow the number to exceed
381
+ // $maxNetworkRetryDelay.
382
+ $sleepSeconds = min(
383
+ Stripe::getInitialNetworkRetryDelay() * 1.0 * pow(2, $numRetries - 1),
384
+ Stripe::getMaxNetworkRetryDelay()
385
+ );
386
+
387
+ // Apply some jitter by randomizing the value in the range of
388
+ // ($sleepSeconds / 2) to ($sleepSeconds).
389
+ $sleepSeconds *= 0.5 * (1 + $this->randomGenerator->randFloat());
390
+
391
+ // But never sleep less than the base sleep seconds.
392
+ $sleepSeconds = max(Stripe::getInitialNetworkRetryDelay(), $sleepSeconds);
393
+
394
+ return $sleepSeconds;
395
  }
396
 
397
  /**
398
+ * Initializes the curl handle. If already initialized, the handle is closed first.
 
 
 
 
 
399
  */
400
+ private function initCurlHandle()
401
  {
402
+ $this->closeCurlHandle();
403
+ $this->curlHandle = curl_init();
404
+ }
405
+
406
+ /**
407
+ * Closes the curl handle if initialized. Do nothing if already closed.
408
+ */
409
+ private function closeCurlHandle()
410
+ {
411
+ if (!is_null($this->curlHandle)) {
412
+ curl_close($this->curlHandle);
413
+ $this->curlHandle = null;
414
  }
415
+ }
416
 
417
+ /**
418
+ * Resets the curl handle. If the handle is not already initialized, or if persistent
419
+ * connections are disabled, the handle is reinitialized instead.
420
+ */
421
+ private function resetCurlHandle()
422
+ {
423
+ if (!is_null($this->curlHandle) && $this->getEnablePersistentConnections()) {
424
+ curl_reset($this->curlHandle);
425
+ } else {
426
+ $this->initCurlHandle();
427
+ }
428
+ }
429
 
430
+ /**
431
+ * Indicates whether it is safe to use HTTP/2 or not.
432
+ *
433
+ * @return boolean
434
+ */
435
+ private function canSafelyUseHttp2()
436
+ {
437
+ // Versions of curl older than 7.60.0 don't respect GOAWAY frames
438
+ // (cf. https://github.com/curl/curl/issues/2416), which Stripe use.
439
+ $curlVersion = curl_version()['version'];
440
+ return (version_compare($curlVersion, '7.60.0') >= 0);
441
+ }
442
 
443
+ /**
444
+ * Checks if a list of headers contains a specific header name.
445
+ *
446
+ * @param string[] $headers
447
+ * @param string $name
448
+ * @return boolean
449
+ */
450
+ private function hasHeader($headers, $name)
451
+ {
452
+ foreach ($headers as $header) {
453
+ if (strncasecmp($header, "{$name}: ", strlen($name) + 2) === 0) {
454
+ return true;
455
  }
456
  }
457
 
458
+ return false;
459
  }
460
  }
app/api/Stripe/HttpClient/data/ca-certificates.crt CHANGED
@@ -1,20 +1,20 @@
1
  ##
2
  ## Bundle of CA Root Certificates
3
  ##
4
- ## Certificate data from Mozilla as of: Fri Jan 22 20:39:57 2016
5
  ##
6
  ## This is a bundle of X.509 certificates of public Certificate Authorities
7
  ## (CA). These were automatically extracted from Mozilla's root certificates
8
  ## file (certdata.txt). This file can be found in the mozilla source tree:
9
- ## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
10
  ##
11
  ## It contains the certificates in PEM format and therefore
12
  ## can be directly used with curl / libcurl / php_curl, or with
13
  ## an Apache+mod_ssl webserver for SSL client authentication.
14
  ## Just configure this file as the SSLCACertificateFile.
15
  ##
16
- ## Conversion done with mk-ca-bundle.pl version 1.25.
17
- ## SHA1: 0ab47e2f41518f8d223eab517cb799e5b071231e
18
  ##
19
 
20
 
@@ -130,30 +130,6 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
130
  RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
131
  -----END CERTIFICATE-----
132
 
133
- AddTrust Low-Value Services Root
134
- ================================
135
- -----BEGIN CERTIFICATE-----
136
- MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
137
- QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
138
- cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
139
- CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
140
- ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
141
- AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
142
- 54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
143
- oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
144
- Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
145
- GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
146
- HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
147
- AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
148
- RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
149
- HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
150
- ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
151
- iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
152
- eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
153
- mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
154
- ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
155
- -----END CERTIFICATE-----
156
-
157
  AddTrust External Root
158
  ======================
159
  -----BEGIN CERTIFICATE-----
@@ -178,54 +154,6 @@ e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
178
  G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
179
  -----END CERTIFICATE-----
180
 
181
- AddTrust Public Services Root
182
- =============================
183
- -----BEGIN CERTIFICATE-----
184
- MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
185
- QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
186
- cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
187
- BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
188
- dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
189
- AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
190
- nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
191
- d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
192
- Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
193
- HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
194
- A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
195
- /zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
196
- FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
197
- A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
198
- JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
199
- +YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
200
- GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
201
- Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
202
- EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
203
- -----END CERTIFICATE-----
204
-
205
- AddTrust Qualified Certificates Root
206
- ====================================
207
- -----BEGIN CERTIFICATE-----
208
- MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
209
- QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
210
- cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
211
- CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
212
- IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
213
- 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
214
- 64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
215
- KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
216
- L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
217
- wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
218
- MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
219
- BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
220
- BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
221
- azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
222
- ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
223
- GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
224
- dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
225
- RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
226
- iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
227
- -----END CERTIFICATE-----
228
-
229
  Entrust Root Certification Authority
230
  ====================================
231
  -----BEGIN CERTIFICATE-----
@@ -252,27 +180,6 @@ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
252
  tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
253
  -----END CERTIFICATE-----
254
 
255
- RSA Security 2048 v3
256
- ====================
257
- -----BEGIN CERTIFICATE-----
258
- MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
259
- ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
260
- MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
261
- BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
262
- AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
263
- Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
264
- WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
265
- KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
266
- +Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
267
- MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
268
- FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
269
- v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
270
- 0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
271
- VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
272
- nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
273
- pKnXwiJPZ9d37CAFYd4=
274
- -----END CERTIFICATE-----
275
-
276
  GeoTrust Global CA
277
  ==================
278
  -----BEGIN CERTIFICATE-----
@@ -294,27 +201,6 @@ XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
294
  Mw==
295
  -----END CERTIFICATE-----
296
 
297
- GeoTrust Global CA 2
298
- ====================
299
- -----BEGIN CERTIFICATE-----
300
- MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
301
- R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
302
- MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
303
- LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
304
- ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
305
- NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
306
- LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
307
- Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
308
- HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
309
- MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
310
- K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
311
- srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
312
- ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
313
- OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
314
- x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
315
- H4z1Ir+rzoPz4iIprn2DQKi6bA==
316
- -----END CERTIFICATE-----
317
-
318
  GeoTrust Universal CA
319
  =====================
320
  -----BEGIN CERTIFICATE-----
@@ -440,56 +326,6 @@ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
440
  12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
441
  -----END CERTIFICATE-----
442
 
443
- Comodo Secure Services root
444
- ===========================
445
- -----BEGIN CERTIFICATE-----
446
- MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
447
- R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
448
- TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
449
- MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
450
- Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
451
- BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
452
- ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
453
- 9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
454
- rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
455
- oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
456
- p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
457
- FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
458
- gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
459
- YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
460
- aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
461
- 4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
462
- Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
463
- DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
464
- pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
465
- RR3B7Hzs/Sk=
466
- -----END CERTIFICATE-----
467
-
468
- Comodo Trusted Services root
469
- ============================
470
- -----BEGIN CERTIFICATE-----
471
- MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
472
- R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
473
- TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
474
- MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
475
- bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
476
- IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
477
- AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
478
- 3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
479
- /9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
480
- juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
481
- ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
482
- DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
483
- /zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
484
- ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
485
- cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
486
- uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
487
- pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
488
- BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
489
- R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
490
- 9y5Xt5hwXsjEeLBi
491
- -----END CERTIFICATE-----
492
-
493
  QuoVadis Root CA
494
  ================
495
  -----BEGIN CERTIFICATE-----
@@ -629,54 +465,6 @@ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
629
  llpwrN9M
630
  -----END CERTIFICATE-----
631
 
632
- Staat der Nederlanden Root CA
633
- =============================
634
- -----BEGIN CERTIFICATE-----
635
- MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
636
- ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
637
- Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
638
- HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
639
- bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
640
- vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
641
- jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
642
- C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
643
- vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
644
- 22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
645
- HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
646
- dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
647
- BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
648
- EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
649
- MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
650
- nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
651
- iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
652
- -----END CERTIFICATE-----
653
-
654
- UTN USERFirst Hardware Root CA
655
- ==============================
656
- -----BEGIN CERTIFICATE-----
657
- MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
658
- BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
659
- IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
660
- BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
661
- OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
662
- eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
663
- ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
664
- DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
665
- wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
666
- tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
667
- i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
668
- Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
669
- gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
670
- lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
671
- UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
672
- BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
673
- //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
674
- XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
675
- lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
676
- iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
677
- nfhmqA==
678
- -----END CERTIFICATE-----
679
-
680
  Camerfirma Chambers of Commerce Root
681
  ====================================
682
  -----BEGIN CERTIFICATE-----
@@ -731,41 +519,6 @@ IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
731
  t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
732
  -----END CERTIFICATE-----
733
 
734
- NetLock Notary (Class A) Root
735
- =============================
736
- -----BEGIN CERTIFICATE-----
737
- MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
738
- EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
739
- dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
740
- ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
741
- DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
742
- EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
743
- VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
744
- cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
745
- D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
746
- z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
747
- /tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
748
- tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
749
- 4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
750
- A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
751
- Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
752
- bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
753
- IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
754
- LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
755
- ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
756
- IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
757
- IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
758
- b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
759
- bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
760
- Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
761
- bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
762
- ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
763
- ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
764
- CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
765
- KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
766
- 8CgHrTwXZoi1/baI
767
- -----END CERTIFICATE-----
768
-
769
  XRamp Global CA Root
770
  ====================
771
  -----BEGIN CERTIFICATE-----
@@ -909,38 +662,6 @@ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
909
  +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
910
  -----END CERTIFICATE-----
911
 
912
- Swisscom Root CA 1
913
- ==================
914
- -----BEGIN CERTIFICATE-----
915
- MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
916
- EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
917
- dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
918
- MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
919
- aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
920
- IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
921
- MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
922
- NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
923
- AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
924
- b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
925
- 7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
926
- cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
927
- WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
928
- haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
929
- MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
930
- HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
931
- BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
932
- MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
933
- jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
934
- MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
935
- VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
936
- vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
937
- OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
938
- 1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
939
- nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
940
- x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
941
- NY6E0F/6MBr1mmz0DlP5OlvRHA==
942
- -----END CERTIFICATE-----
943
-
944
  DigiCert Assured ID Root CA
945
  ===========================
946
  -----BEGIN CERTIFICATE-----
@@ -1298,33 +1019,6 @@ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
1298
  ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
1299
  -----END CERTIFICATE-----
1300
 
1301
- WellsSecure Public Root Certificate Authority
1302
- =============================================
1303
- -----BEGIN CERTIFICATE-----
1304
- MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
1305
- F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
1306
- NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
1307
- MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
1308
- bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
1309
- VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1310
- CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
1311
- iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
1312
- i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
1313
- bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
1314
- K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
1315
- AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
1316
- cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
1317
- lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
1318
- i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
1319
- GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
1320
- Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
1321
- K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
1322
- bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
1323
- qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
1324
- E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
1325
- tylv2G0xffX8oRAHh84vWdw+WNs=
1326
- -----END CERTIFICATE-----
1327
-
1328
  COMODO ECC Certification Authority
1329
  ==================================
1330
  -----BEGIN CERTIFICATE-----
@@ -1342,30 +1036,6 @@ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
1342
  U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
1343
  -----END CERTIFICATE-----
1344
 
1345
- IGC/A
1346
- =====
1347
- -----BEGIN CERTIFICATE-----
1348
- MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
1349
- VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
1350
- Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
1351
- MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
1352
- EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
1353
- STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
1354
- IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
1355
- TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
1356
- So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
1357
- HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
1358
- frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
1359
- tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
1360
- egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
1361
- iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
1362
- q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
1363
- MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
1364
- Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
1365
- lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
1366
- 0mBWWg==
1367
- -----END CERTIFICATE-----
1368
-
1369
  Security Communication EV RootCA1
1370
  =================================
1371
  -----BEGIN CERTIFICATE-----
@@ -1410,46 +1080,6 @@ hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
1410
  okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
1411
  -----END CERTIFICATE-----
1412
 
1413
- Microsec e-Szigno Root CA
1414
- =========================
1415
- -----BEGIN CERTIFICATE-----
1416
- MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
1417
- BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
1418
- EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
1419
- MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
1420
- dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
1421
- GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
1422
- AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
1423
- d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
1424
- oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
1425
- QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
1426
- PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
1427
- MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
1428
- IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
1429
- VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
1430
- LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
1431
- dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
1432
- AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
1433
- 4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
1434
- AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
1435
- egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
1436
- Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
1437
- PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
1438
- c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
1439
- cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
1440
- IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
1441
- WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
1442
- MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
1443
- MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
1444
- Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
1445
- HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
1446
- nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
1447
- aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
1448
- 86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
1449
- yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
1450
- S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
1451
- -----END CERTIFICATE-----
1452
-
1453
  Certigna
1454
  ========
1455
  -----BEGIN CERTIFICATE-----
@@ -1575,58 +1205,6 @@ LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
1575
  dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
1576
  -----END CERTIFICATE-----
1577
 
1578
- Buypass Class 2 CA 1
1579
- ====================
1580
- -----BEGIN CERTIFICATE-----
1581
- MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
1582
- QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
1583
- MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
1584
- c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
1585
- hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
1586
- cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
1587
- 0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
1588
- 0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
1589
- uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
1590
- MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
1591
- AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
1592
- 1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
1593
- 7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
1594
- fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
1595
- wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
1596
- -----END CERTIFICATE-----
1597
-
1598
- EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
1599
- ==========================================================================
1600
- -----BEGIN CERTIFICATE-----
1601
- MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
1602
- bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
1603
- QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
1604
- Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
1605
- ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
1606
- IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
1607
- SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
1608
- X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
1609
- gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
1610
- eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
1611
- TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
1612
- Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
1613
- uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
1614
- qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
1615
- ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
1616
- Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
1617
- /wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
1618
- Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
1619
- FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
1620
- zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
1621
- XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
1622
- bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
1623
- RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
1624
- 1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
1625
- 2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
1626
- Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
1627
- AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
1628
- -----END CERTIFICATE-----
1629
-
1630
  certSIGN ROOT CA
1631
  ================
1632
  -----BEGIN CERTIFICATE-----
@@ -1647,49 +1225,6 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
1647
  TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
1648
  -----END CERTIFICATE-----
1649
 
1650
- CNNIC ROOT
1651
- ==========
1652
- -----BEGIN CERTIFICATE-----
1653
- MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
1654
- ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
1655
- OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
1656
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
1657
- o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
1658
- VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
1659
- VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
1660
- czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
1661
- y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
1662
- wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
1663
- lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
1664
- Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
1665
- O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
1666
- BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
1667
- G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
1668
- mxE=
1669
- -----END CERTIFICATE-----
1670
-
1671
- ApplicationCA - Japanese Government
1672
- ===================================
1673
- -----BEGIN CERTIFICATE-----
1674
- MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
1675
- SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
1676
- MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
1677
- cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1678
- CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
1679
- fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
1680
- wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
1681
- jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
1682
- nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
1683
- WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
1684
- BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
1685
- vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
1686
- o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
1687
- /DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
1688
- io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
1689
- dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
1690
- rosot4LKGAfmt1t06SAZf7IbiVQ=
1691
- -----END CERTIFICATE-----
1692
-
1693
  GeoTrust Primary Certification Authority - G3
1694
  =============================================
1695
  -----BEGIN CERTIFICATE-----
@@ -1821,7 +1356,7 @@ AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
1821
  -----END CERTIFICATE-----
1822
 
1823
  NetLock Arany (Class Gold) Főtanúsítvány
1824
- ============================================
1825
  -----BEGIN CERTIFICATE-----
1826
  MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
1827
  A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
@@ -1876,58 +1411,6 @@ IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
1876
  66+KAQ==
1877
  -----END CERTIFICATE-----
1878
 
1879
- CA Disig
1880
- ========
1881
- -----BEGIN CERTIFICATE-----
1882
- MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
1883
- QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
1884
- MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
1885
- bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
1886
- DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
1887
- GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
1888
- Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
1889
- hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
1890
- ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
1891
- gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
1892
- AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
1893
- aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
1894
- ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
1895
- BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
1896
- WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
1897
- mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
1898
- CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
1899
- ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
1900
- 4Z7CRneC9VkGjCFMhwnN5ag=
1901
- -----END CERTIFICATE-----
1902
-
1903
- Juur-SK
1904
- =======
1905
- -----BEGIN CERTIFICATE-----
1906
- MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
1907
- c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
1908
- DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
1909
- SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
1910
- aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
1911
- ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
1912
- TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
1913
- +Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
1914
- UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
1915
- Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
1916
- MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
1917
- HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
1918
- AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
1919
- cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
1920
- AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
1921
- cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
1922
- FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
1923
- A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
1924
- ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
1925
- abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
1926
- IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
1927
- Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
1928
- yyqcjg==
1929
- -----END CERTIFICATE-----
1930
-
1931
  Hongkong Post Root CA 1
1932
  =======================
1933
  -----BEGIN CERTIFICATE-----
@@ -2361,7 +1844,7 @@ Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
2361
  -----END CERTIFICATE-----
2362
 
2363
  Certinomis - Autorité Racine
2364
- =============================
2365
  -----BEGIN CERTIFICATE-----
2366
  MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
2367
  Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
@@ -2391,41 +1874,6 @@ wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/
2391
  vgt2Fl43N+bYdJeimUV5
2392
  -----END CERTIFICATE-----
2393
 
2394
- Root CA Generalitat Valenciana
2395
- ==============================
2396
- -----BEGIN CERTIFICATE-----
2397
- MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
2398
- ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
2399
- IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
2400
- WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
2401
- CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
2402
- CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
2403
- F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
2404
- ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
2405
- D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
2406
- JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
2407
- AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
2408
- dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
2409
- ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
2410
- AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
2411
- YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
2412
- AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
2413
- aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
2414
- AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
2415
- YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
2416
- AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
2417
- OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
2418
- dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
2419
- BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
2420
- A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
2421
- b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
2422
- TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
2423
- Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
2424
- NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
2425
- iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
2426
- +GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
2427
- -----END CERTIFICATE-----
2428
-
2429
  TWCA Root Certification Authority
2430
  =================================
2431
  -----BEGIN CERTIFICATE-----
@@ -2871,93 +2319,6 @@ poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
2871
  eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
2872
  -----END CERTIFICATE-----
2873
 
2874
- China Internet Network Information Center EV Certificates Root
2875
- ==============================================================
2876
- -----BEGIN CERTIFICATE-----
2877
- MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
2878
- BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
2879
- aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
2880
- Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
2881
- A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
2882
- PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
2883
- cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
2884
- jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
2885
- 98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
2886
- klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
2887
- KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
2888
- 7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
2889
- HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
2890
- glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
2891
- 0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
2892
- 7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
2893
- ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
2894
- 5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
2895
- -----END CERTIFICATE-----
2896
-
2897
- Swisscom Root CA 2
2898
- ==================
2899
- -----BEGIN CERTIFICATE-----
2900
- MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG
2901
- EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
2902
- dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2
2903
- MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
2904
- aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC
2905
- IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM
2906
- LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo
2907
- ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ
2908
- wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH
2909
- Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a
2910
- SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS
2911
- NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab
2912
- mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY
2913
- Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3
2914
- qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
2915
- HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O
2916
- BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu
2917
- MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO
2918
- v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ
2919
- 82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz
2920
- o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs
2921
- a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx
2922
- OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW
2923
- mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o
2924
- +sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC
2925
- rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX
2926
- 5OfNeOI5wSsSnqaeG8XmDtkx2Q==
2927
- -----END CERTIFICATE-----
2928
-
2929
- Swisscom Root EV CA 2
2930
- =====================
2931
- -----BEGIN CERTIFICATE-----
2932
- MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE
2933
- BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl
2934
- cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN
2935
- MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT
2936
- HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg
2937
- Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz
2938
- o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy
2939
- Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti
2940
- GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li
2941
- qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH
2942
- Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG
2943
- alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa
2944
- m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox
2945
- bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi
2946
- xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/
2947
- BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED
2948
- MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB
2949
- bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL
2950
- j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU
2951
- wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7
2952
- XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH
2953
- 59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/
2954
- 23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq
2955
- J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA
2956
- HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi
2957
- uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW
2958
- l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
2959
- -----END CERTIFICATE-----
2960
-
2961
  CA Disig Root R1
2962
  ================
2963
  -----BEGIN CERTIFICATE-----
@@ -3756,7 +3117,7 @@ ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
3756
  -----END CERTIFICATE-----
3757
 
3758
  TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
3759
- =========================================================
3760
  -----BEGIN CERTIFICATE-----
3761
  MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
3762
  BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
@@ -3779,30 +3140,6 @@ lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8
3779
  B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
3780
  -----END CERTIFICATE-----
3781
 
3782
- TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6
3783
- =========================================================
3784
- -----BEGIN CERTIFICATE-----
3785
- MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQGEwJUUjEPMA0G
3786
- A1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
3787
- acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF
3788
- bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5
3789
- MDQxMFoXDTIzMTIxNjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBL
3790
- BgNVBAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSf
3791
- aSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2VydGlm
3792
- aWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
3793
- AoIBAQCdsGjW6L0UlqMACprx9MfMkU1xeHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a
3794
- 2uqsxgbPJQ1BgfbBOCK9+bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EED
3795
- wnS3/faAz1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0pu5Fb
3796
- HH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6plVxiSvgNZ1GpryHV
3797
- +DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMBAAGjQjBAMB0GA1UdDgQWBBTdVRcT
3798
- 9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
3799
- 9w0BAQsFAAOCAQEAb1gNl0OqFlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3R
3800
- fdCaqaXKGDsCQC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy
3801
- o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKIDgI6tflEATseW
3802
- hvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm9ocJV612ph1jmv3XZch4gyt1
3803
- O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsGtAuYSyher4hYyw==
3804
- -----END CERTIFICATE-----
3805
-
3806
  Certinomis - Root CA
3807
  ====================
3808
  -----BEGIN CERTIFICATE-----
@@ -3892,28 +3229,418 @@ Daupn75OcsqF1NnstTJFGG+rrQIwfcf3aWMvoeGY7xMQ0Xk/0f7qO3/eVvSQsRUR2LIiFdAvwyYu
3892
  a/GRspBl9JrmkO5K
3893
  -----END CERTIFICATE-----
3894
 
3895
- ================================================================
3896
- C: US
3897
- O: GTE Corporation
3898
- OU: GTE CyberTrust Solutions, Inc.
3899
- CN: GTE CyberTrust Global Root
3900
- --
3901
- Not Before: 1998-08-13
3902
- Not After: 2018-08-13
3903
- Signature: md5WithRSAEncryption
3904
- Key: RSA:1024
3905
- -----BEGIN CERTIFICATE-----
3906
- MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
3907
- VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
3908
- bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
3909
- b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV
3910
- UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
3911
- cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
3912
- b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH
3913
- iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS
3914
- r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4
3915
- 04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r
3916
- GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9
3917
- 3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P
3918
- lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3919
  -----END CERTIFICATE-----
1
  ##
2
  ## Bundle of CA Root Certificates
3
  ##
4
+ ## Certificate data from Mozilla as of: Wed Sep 20 03:12:05 2017 GMT
5
  ##
6
  ## This is a bundle of X.509 certificates of public Certificate Authorities
7
  ## (CA). These were automatically extracted from Mozilla's root certificates
8
  ## file (certdata.txt). This file can be found in the mozilla source tree:
9
+ ## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
10
  ##
11
  ## It contains the certificates in PEM format and therefore
12
  ## can be directly used with curl / libcurl / php_curl, or with
13
  ## an Apache+mod_ssl webserver for SSL client authentication.
14
  ## Just configure this file as the SSLCACertificateFile.
15
  ##
16
+ ## Conversion done with mk-ca-bundle.pl version 1.27.
17
+ ## SHA256: 2b2dbe5244e0047e088c597998883a913f6c5fffd1cb5c0fe5a368c8466cb2ec
18
  ##
19
 
20
 
130
  RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
131
  -----END CERTIFICATE-----
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  AddTrust External Root
134
  ======================
135
  -----BEGIN CERTIFICATE-----
154
  G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
155
  -----END CERTIFICATE-----
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  Entrust Root Certification Authority
158
  ====================================
159
  -----BEGIN CERTIFICATE-----
180
  tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
181
  -----END CERTIFICATE-----
182
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  GeoTrust Global CA
184
  ==================
185
  -----BEGIN CERTIFICATE-----
201
  Mw==
202
  -----END CERTIFICATE-----
203
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  GeoTrust Universal CA
205
  =====================
206
  -----BEGIN CERTIFICATE-----
326
  12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
327
  -----END CERTIFICATE-----
328
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  QuoVadis Root CA
330
  ================
331
  -----BEGIN CERTIFICATE-----
465
  llpwrN9M
466
  -----END CERTIFICATE-----
467
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
468
  Camerfirma Chambers of Commerce Root
469
  ====================================
470
  -----BEGIN CERTIFICATE-----
519
  t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
520
  -----END CERTIFICATE-----
521
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
522
  XRamp Global CA Root
523
  ====================
524
  -----BEGIN CERTIFICATE-----
662
  +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
663
  -----END CERTIFICATE-----
664
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
665
  DigiCert Assured ID Root CA
666
  ===========================
667
  -----BEGIN CERTIFICATE-----
1019
  ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
1020
  -----END CERTIFICATE-----
1021
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1022
  COMODO ECC Certification Authority
1023
  ==================================
1024
  -----BEGIN CERTIFICATE-----
1036
  U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
1037
  -----END CERTIFICATE-----
1038
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1039
  Security Communication EV RootCA1
1040
  =================================
1041
  -----BEGIN CERTIFICATE-----
1080
  okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
1081
  -----END CERTIFICATE-----
1082
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1083
  Certigna
1084
  ========
1085
  -----BEGIN CERTIFICATE-----
1205
  dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
1206
  -----END CERTIFICATE-----
1207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1208
  certSIGN ROOT CA
1209
  ================
1210
  -----BEGIN CERTIFICATE-----
1225
  TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
1226
  -----END CERTIFICATE-----
1227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1228
  GeoTrust Primary Certification Authority - G3
1229
  =============================================
1230
  -----BEGIN CERTIFICATE-----
1356
  -----END CERTIFICATE-----
1357
 
1358
  NetLock Arany (Class Gold) Főtanúsítvány
1359
+ ========================================
1360
  -----BEGIN CERTIFICATE-----
1361
  MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
1362
  A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
1411
  66+KAQ==
1412
  -----END CERTIFICATE-----
1413
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1414
  Hongkong Post Root CA 1
1415
  =======================
1416
  -----BEGIN CERTIFICATE-----
1844
  -----END CERTIFICATE-----
1845
 
1846
  Certinomis - Autorité Racine
1847
+ ============================
1848
  -----BEGIN CERTIFICATE-----
1849
  MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
1850
  Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
1874
  vgt2Fl43N+bYdJeimUV5
1875
  -----END CERTIFICATE-----
1876
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1877
  TWCA Root Certification Authority
1878
  =================================
1879
  -----BEGIN CERTIFICATE-----
2319
  eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
2320
  -----END CERTIFICATE-----
2321
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2322
  CA Disig Root R1
2323
  ================
2324
  -----BEGIN CERTIFICATE-----
3117
  -----END CERTIFICATE-----
3118
 
3119
  TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
3120
+ ====================================================
3121
  -----BEGIN CERTIFICATE-----
3122
  MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
3123
  BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
3140
  B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
3141
  -----END CERTIFICATE-----
3142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3143
  Certinomis - Root CA
3144
  ====================
3145
  -----BEGIN CERTIFICATE-----
3229
  a/GRspBl9JrmkO5K
3230
  -----END CERTIFICATE-----
3231
 
3232
+ SZAFIR ROOT CA2
3233
+ ===============
3234
+ -----BEGIN CERTIFICATE-----
3235
+ MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG
3236
+ A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV
3237
+ BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ
3238
+ BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD
3239
+ VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q
3240
+ qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK
3241
+ DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE
3242
+ 2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ
3243
+ ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi
3244
+ ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
3245
+ AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC
3246
+ AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5
3247
+ O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67
3248
+ oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul
3249
+ 4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6
3250
+ +/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
3251
+ -----END CERTIFICATE-----
3252
+
3253
+ Certum Trusted Network CA 2
3254
+ ===========================
3255
+ -----BEGIN CERTIFICATE-----
3256
+ MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE
3257
+ BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1
3258
+ bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y
3259
+ ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ
3260
+ TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl
3261
+ cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB
3262
+ IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9
3263
+ 7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o
3264
+ CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b
3265
+ Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p
3266
+ uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130
3267
+ GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ
3268
+ 9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB
3269
+ Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye
3270
+ hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM
3271
+ BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
3272
+ AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI
3273
+ hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW
3274
+ Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA
3275
+ L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo
3276
+ clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM
3277
+ pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb
3278
+ w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo
3279
+ J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm
3280
+ ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX
3281
+ is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7
3282
+ zAYspsbiDrW5viSP
3283
+ -----END CERTIFICATE-----
3284
+
3285
+ Hellenic Academic and Research Institutions RootCA 2015
3286
+ =======================================================
3287
+ -----BEGIN CERTIFICATE-----
3288
+ MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT
3289
+ BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0
3290
+ aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
3291
+ YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx
3292
+ MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg
3293
+ QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV
3294
+ BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw
3295
+ MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv
3296
+ bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh
3297
+ iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+
3298
+ 6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd
3299
+ FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr
3300
+ i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F
3301
+ GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2
3302
+ fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu
3303
+ iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
3304
+ Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
3305
+ AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI
3306
+ hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+
3307
+ D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM
3308
+ d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y
3309
+ d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn
3310
+ 82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb
3311
+ davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F
3312
+ Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt
3313
+ J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa
3314
+ JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q
3315
+ p/UsQu0yrbYhnr68
3316
+ -----END CERTIFICATE-----
3317
+
3318
+ Hellenic Academic and Research Institutions ECC RootCA 2015
3319
+ ===========================================================
3320
+ -----BEGIN CERTIFICATE-----
3321
+ MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0
3322
+ aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
3323
+ cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
3324
+ aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw
3325
+ MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj
3326
+ IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD
3327
+ VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290
3328
+ Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP
3329
+ dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK
3330
+ Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
3331
+ BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA
3332
+ GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
3333
+ dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
3334
+ -----END CERTIFICATE-----
3335
+
3336
+ Certplus Root CA G1
3337
+ ===================
3338
+ -----BEGIN CERTIFICATE-----
3339
+ MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUAMD4xCzAJBgNV
3340
+ BAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTAe
3341
+ Fw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhD
3342
+ ZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQAD
3343
+ ggIPADCCAgoCggIBANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHN
3344
+ r49aiZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt6kuJPKNx
3345
+ Qv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP0FG7Yn2ksYyy/yARujVj
3346
+ BYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTv
3347
+ LRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDEEW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2
3348
+ z4QTd28n6v+WZxcIbekN1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc
3349
+ 4nBvCGrch2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCTmehd
3350
+ 4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV4EJQeIQEQWGw9CEj
3351
+ jy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPOWftwenMGE9nTdDckQQoRb5fc5+R+
3352
+ ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0G
3353
+ A1UdDgQWBBSowcCbkahDFXxdBie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHY
3354
+ lwuBsTANBgkqhkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh
3355
+ 66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7/SMNkPX0XtPG
3356
+ YX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BSS7CTKtQ+FjPlnsZlFT5kOwQ/
3357
+ 2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F
3358
+ 6ALEUz65noe8zDUa3qHpimOHZR4RKttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilX
3359
+ CNQ314cnrUlZp5GrRHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWe
3360
+ tUNy6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEVV/xuZDDC
3361
+ VRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5g4VCXA9DO2pJNdWY9BW/
3362
+ +mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl++O/QmueD6i9a5jc2NvLi6Td11n0bt3+
3363
+ qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo=
3364
+ -----END CERTIFICATE-----
3365
+
3366
+ Certplus Root CA G2
3367
+ ===================
3368
+ -----BEGIN CERTIFICATE-----
3369
+ MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT
3370
+ AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x
3371
+ NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0
3372
+ cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA
3373
+ BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN
3374
+ Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD
3375
+ AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud
3376
+ IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV
3377
+ HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl
3378
+ vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw==
3379
+ -----END CERTIFICATE-----
3380
+
3381
+ OpenTrust Root CA G1
3382
+ ====================
3383
+ -----BEGIN CERTIFICATE-----
3384
+ MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUAMEAxCzAJBgNV
3385
+ BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcx
3386
+ MB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
3387
+ CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEB
3388
+ AQUAA4ICDwAwggIKAoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7fa
3389
+ Yp6bwiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX/uMftk87
3390
+ ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR077F9jAHiOH3BX2pfJLKO
3391
+ YheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGPuY4zbGneWK2gDqdkVBFpRGZPTBKnjix9
3392
+ xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLxp2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO
3393
+ 9z0M+Yo0FMT7MzUj8czxKselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq
3394
+ 3ywgsNw2TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+WG+Oi
3395
+ n6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPwvFEVVJSmdz7QdFG9
3396
+ URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYYEQRVzXR7z2FwefR7LFxckvzluFqr
3397
+ TJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
3398
+ /zAdBgNVHQ4EFgQUl0YhVyE12jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/Px
3399
+ N3DlCPaTKbYwDQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E
3400
+ PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kfgLMtMrpkZ2Cv
3401
+ uVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbSFXJfLkur1J1juONI5f6ELlgK
3402
+ n0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLh
3403
+ X4SPgPL0DTatdrOjteFkdjpY3H1PXlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80
3404
+ nR14SohWZ25g/4/Ii+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcm
3405
+ GS3tTAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L9109S5zvE/
3406
+ bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/KyPu1svf0OnWZzsD2097+o
3407
+ 4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJAwSQiumPv+i2tCqjI40cHLI5kqiPAlxA
3408
+ OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx
3409
+ -----END CERTIFICATE-----
3410
+
3411
+ OpenTrust Root CA G2
3412
+ ====================
3413
+ -----BEGIN CERTIFICATE-----
3414
+ MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUAMEAxCzAJBgNV
3415
+ BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcy
3416
+ MB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
3417
+ CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEB
3418
+ AQUAA4ICDwAwggIKAoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+
3419
+ Ntmh/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78eCbY2albz
3420
+ 4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/61UWY0jUJ9gNDlP7ZvyCV
3421
+ eYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fEFY8ElggGQgT4hNYdvJGmQr5J1WqIP7wt
3422
+ UdGejeBSzFfdNTVY27SPJIjki9/ca1TSgSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz
3423
+ 3GIZ38i1MH/1PCZ1Eb3XG7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj
3424
+ 3CzMpSZyYhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaHvGOz
3425
+ 9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4t/bQWVyJ98LVtZR0
3426
+ 0dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/gh7PU3+06yzbXfZqfUAkBXKJOAGT
3427
+ y3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
3428
+ /zAdBgNVHQ4EFgQUajn6QiL35okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59
3429
+ M4PLuG53hq8wDQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz
3430
+ Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0nXGEL8pZ0keI
3431
+ mUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qTRmTFAHneIWv2V6CG1wZy7HBG
3432
+ S4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpTwm+bREx50B1ws9efAvSyB7DH5fitIw6mVskp
3433
+ EndI2S9G/Tvw/HRwkqWOOAgfZDC2t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ
3434
+ 6e18CL13zSdkzJTaTkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97kr
3435
+ gCf2o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU3jg9CcCo
3436
+ SmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eAiN1nE28daCSLT7d0geX0
3437
+ YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14fWKGVyasvc0rQLW6aWQ9VGHgtPFGml4vm
3438
+ u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK
3439
+ -----END CERTIFICATE-----
3440
+
3441
+ OpenTrust Root CA G3
3442
+ ====================
3443
+ -----BEGIN CERTIFICATE-----
3444
+ MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT
3445
+ AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X
3446
+ DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w
3447
+ ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA
3448
+ IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B
3449
+ ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB
3450
+ /wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf
3451
+ BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM
3452
+ BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta
3453
+ 3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB
3454
+ -----END CERTIFICATE-----
3455
+
3456
+ ISRG Root X1
3457
+ ============
3458
+ -----BEGIN CERTIFICATE-----
3459
+ MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE
3460
+ BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD
3461
+ EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG
3462
+ EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT
3463
+ DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r
3464
+ Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1
3465
+ 3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K
3466
+ b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN
3467
+ Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ
3468
+ 4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf
3469
+ 1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu
3470
+ hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH
3471
+ usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r
3472
+ OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G
3473
+ A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY
3474
+ 9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
3475
+ ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV
3476
+ 0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt
3477
+ hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw
3478
+ TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx
3479
+ e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA
3480
+ JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD
3481
+ YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n
3482
+ JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ
3483
+ m+kXQ99b21/+jh5Xos1AnX5iItreGCc=
3484
+ -----END CERTIFICATE-----
3485
+
3486
+ AC RAIZ FNMT-RCM
3487
+ ================
3488
+ -----BEGIN CERTIFICATE-----
3489
+ MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT
3490
+ AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw
3491
+ MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD
3492
+ TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
3493
+ ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf
3494
+ qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr
3495
+ btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL
3496
+ j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou
3497
+ 08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw
3498
+ WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT
3499
+ tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ
3500
+ 47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC
3501
+ ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa
3502
+ i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
3503
+ FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o
3504
+ dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD
3505
+ nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s
3506
+ D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ
3507
+ j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT
3508
+ Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW
3509
+ +YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7
3510
+ Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d
3511
+ 8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm
3512
+ 5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG
3513
+ rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM=
3514
+ -----END CERTIFICATE-----
3515
+
3516
+ Amazon Root CA 1
3517
+ ================
3518
+ -----BEGIN CERTIFICATE-----
3519
+ MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD
3520
+ VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1
3521
+ MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
3522
+ bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
3523
+ ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH
3524
+ FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ
3525
+ gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t
3526
+ dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce
3527
+ VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
3528
+ /zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3
3529
+ DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM
3530
+ CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy
3531
+ 8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa
3532
+ 2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2
3533
+ xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5
3534
+ -----END CERTIFICATE-----
3535
+
3536
+ Amazon Root CA 2
3537
+ ================
3538
+ -----BEGIN CERTIFICATE-----
3539
+ MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD
3540
+ VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1
3541
+ MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
3542
+ bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
3543
+ ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4
3544
+ kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp
3545
+ N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9
3546
+ AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd
3547
+ fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx
3548
+ kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS
3549
+ btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0
3550
+ Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN
3551
+ c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+
3552
+ 3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw
3553
+ DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA
3554
+ A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY
3555
+ +gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE
3556
+ YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW
3557
+ xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ
3558
+ gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW
3559
+ aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV
3560
+ Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3
3561
+ KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi
3562
+ JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw=
3563
+ -----END CERTIFICATE-----
3564
+
3565
+ Amazon Root CA 3
3566
+ ================
3567
+ -----BEGIN CERTIFICATE-----
3568
+ MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG
3569
+ EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy
3570
+ NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
3571
+ MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB
3572
+ f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr
3573
+ Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43
3574
+ rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc
3575
+ eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==
3576
+ -----END CERTIFICATE-----
3577
+
3578
+ Amazon Root CA 4
3579
+ ================
3580
+ -----BEGIN CERTIFICATE-----
3581
+ MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG
3582
+ EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy
3583
+ NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
3584
+ MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN
3585
+ /sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri
3586
+ 83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
3587
+ HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA
3588
+ MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1
3589
+ AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==
3590
+ -----END CERTIFICATE-----
3591
+
3592
+ LuxTrust Global Root 2
3593
+ ======================
3594
+ -----BEGIN CERTIFICATE-----
3595
+ MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG
3596
+ A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh
3597
+ bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW
3598
+ MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC
3599
+ AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm
3600
+ Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2
3601
+ xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC
3602
+ wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm
3603
+ 1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm
3604
+ FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF
3605
+ wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/
3606
+ a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U
3607
+ ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ
3608
+ MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB
3609
+ /zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5
3610
+ Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT
3611
+ +Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ
3612
+ FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN
3613
+ H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW
3614
+ 7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu
3615
+ ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA
3616
+ VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR
3617
+ TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt
3618
+ /f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc
3619
+ 7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I
3620
+ iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr
3621
+ -----END CERTIFICATE-----
3622
+
3623
+ TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1
3624
+ =============================================
3625
+ -----BEGIN CERTIFICATE-----
3626
+ MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT
3627
+ D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr
3628
+ IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g
3629
+ TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp
3630
+ ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD
3631
+ VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt
3632
+ c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth
3633
+ bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11
3634
+ IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
3635
+ MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8
3636
+ 6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc
3637
+ wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0
3638
+ 3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9
3639
+ WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU
3640
+ ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
3641
+ KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
3642
+ AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc
3643
+ lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R
3644
+ e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j
3645
+ q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
3646
  -----END CERTIFICATE-----
app/api/Stripe/Invoice.php CHANGED
@@ -5,53 +5,170 @@ namespace Stripe;
5
  /**
6
  * Class Invoice
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class Invoice extends ApiResource
11
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  /**
13
  * @param array|null $params
14
  * @param array|string|null $opts
15
  *
16
- * @return Invoice The created invoice.
17
  */
18
- public static function create($params = null, $opts = null)
19
  {
20
- return self::_create($params, $opts);
 
 
 
21
  }
22
 
23
  /**
24
- * @param string $id The ID of the invoice to retrieve.
25
  * @param array|string|null $opts
26
  *
27
- * @return Invoice
28
  */
29
- public static function retrieve($id, $opts = null)
30
  {
31
- return self::_retrieve($id, $opts);
 
 
 
32
  }
33
 
34
  /**
35
  * @param array|null $params
36
  * @param array|string|null $opts
37
  *
38
- * @return Collection of Invoices
39
  */
40
- public static function all($params = null, $opts = null)
41
  {
42
- return self::_all($params, $opts);
 
 
 
43
  }
44
 
45
  /**
46
- * @param string $id The ID of the invoice to update.
47
  * @param array|null $params
48
- * @param array|string|null $options
49
  *
50
- * @return Invoice The updated invoice.
51
  */
52
- public static function update($id, $params = null, $options = null)
53
  {
54
- return self::_update($id, $params, $options);
 
 
 
55
  }
56
 
57
  /**
@@ -70,22 +187,15 @@ class Invoice extends ApiResource
70
  }
71
 
72
  /**
 
73
  * @param array|string|null $opts
74
  *
75
- * @return Invoice The saved invoice.
76
- */
77
- public function save($opts = null)
78
- {
79
- return $this->_save($opts);
80
- }
81
-
82
- /**
83
- * @return Invoice The paid invoice.
84
  */
85
- public function pay($opts = null)
86
  {
87
- $url = $this->instanceUrl() . '/pay';
88
- list($response, $opts) = $this->_request('post', $url, null, $opts);
89
  $this->refreshFrom($response, $opts);
90
  return $this;
91
  }
5
  /**
6
  * Class Invoice
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $account_country
11
+ * @property string $account_name
12
+ * @property int $amount_due
13
+ * @property int $amount_paid
14
+ * @property int $amount_remaining
15
+ * @property int $application_fee_amount
16
+ * @property int $attempt_count
17
+ * @property bool $attempted
18
+ * @property bool $auto_advance
19
+ * @property string $billing
20
+ * @property string $billing_reason
21
+ * @property string $charge
22
+ * @property string $collection_method
23
+ * @property int $created
24
+ * @property string $currency
25
+ * @property array $custom_fields
26
+ * @property string $customer
27
+ * @property mixed $customer_address
28
+ * @property string $customer_email
29
+ * @property string $customer_name
30
+ * @property string $customer_phone
31
+ * @property mixed $customer_shipping
32
+ * @property string $customer_tax_exempt
33
+ * @property array $customer_tax_ids
34
+ * @property string $default_payment_method
35
+ * @property string $default_source
36
+ * @property array $default_tax_rates
37
+ * @property string $description
38
+ * @property Discount $discount
39
+ * @property int $due_date
40
+ * @property int $ending_balance
41
+ * @property string $footer
42
+ * @property string $hosted_invoice_url
43
+ * @property string $invoice_pdf
44
+ * @property Collection $lines
45
+ * @property bool $livemode
46
+ * @property StripeObject $metadata
47
+ * @property int $next_payment_attempt
48
+ * @property string $number
49
+ * @property bool $paid
50
+ * @property string $payment_intent
51
+ * @property int $period_end
52
+ * @property int $period_start
53
+ * @property int $post_payment_credit_notes_amount
54
+ * @property int $pre_payment_credit_notes_amount
55
+ * @property string $receipt_number
56
+ * @property int $starting_balance
57
+ * @property string $statement_descriptor
58
+ * @property string $status
59
+ * @property mixed $status_transitions
60
+ * @property string $subscription
61
+ * @property int $subscription_proration_date
62
+ * @property int $subtotal
63
+ * @property int $tax
64
+ * @property mixed $threshold_reason
65
+ * @property int $total
66
+ * @property array $total_tax_amounts
67
+ * @property int $webhooks_delivered_at
68
+ *
69
  * @package Stripe
70
  */
71
  class Invoice extends ApiResource
72
  {
73
+ const OBJECT_NAME = "invoice";
74
+
75
+ use ApiOperations\All;
76
+ use ApiOperations\Create;
77
+ use ApiOperations\Delete;
78
+ use ApiOperations\Retrieve;
79
+ use ApiOperations\Update;
80
+
81
+ /**
82
+ * Possible string representations of the billing reason.
83
+ * @link https://stripe.com/docs/api/invoices/object#invoice_object-billing_reason
84
+ */
85
+ const BILLING_REASON_MANUAL = 'manual';
86
+ const BILLING_REASON_SUBSCRIPTION = 'subscription';
87
+ const BILLING_REASON_SUBSCRIPTION_CREATE = 'subscription_create';
88
+ const BILLING_REASON_SUBSCRIPTION_CYCLE = 'subscription_cycle';
89
+ const BILLING_REASON_SUBSCRIPTION_THRESHOLD = 'subscription_threshold';
90
+ const BILLING_REASON_SUBSCRIPTION_UPDATE = 'subscription_update';
91
+ const BILLING_REASON_UPCOMING = 'upcoming';
92
+
93
+ /**
94
+ * Possible string representations of the `collection_method` property.
95
+ * @link https://stripe.com/docs/api/invoices/object#invoice_object-collection_method
96
+ */
97
+ const COLLECTION_METHOD_CHARGE_AUTOMATICALLY = 'charge_automatically';
98
+ const COLLECTION_METHOD_SEND_INVOICE = 'send_invoice';
99
+
100
+ /**
101
+ * Possible string representations of the invoice status.
102
+ * @link https://stripe.com/docs/api/invoices/object#invoice_object-status
103
+ */
104
+ const STATUS_DRAFT = 'draft';
105
+ const STATUS_OPEN = 'open';
106
+ const STATUS_PAID = 'paid';
107
+ const STATUS_UNCOLLECTIBLE = 'uncollectible';
108
+ const STATUS_VOID = 'void';
109
+
110
+ /**
111
+ * Possible string representations of the `billing` property.
112
+ * @deprecated Use `collection_method` instead.
113
+ * @link https://stripe.com/docs/api/invoices/object#invoice_object-billing
114
+ */
115
+ const BILLING_CHARGE_AUTOMATICALLY = 'charge_automatically';
116
+ const BILLING_SEND_INVOICE = 'send_invoice';
117
+
118
  /**
119
  * @param array|null $params
120
  * @param array|string|null $opts
121
  *
122
+ * @return Invoice The finalized invoice.
123
  */
124
+ public function finalizeInvoice($params = null, $opts = null)
125
  {
126
+ $url = $this->instanceUrl() . '/finalize';
127
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
128
+ $this->refreshFrom($response, $opts);
129
+ return $this;
130
  }
131
 
132
  /**
133
+ * @param array|null $params
134
  * @param array|string|null $opts
135
  *
136
+ * @return Invoice The uncollectible invoice.
137
  */
138
+ public function markUncollectible($params = null, $opts = null)
139
  {
140
+ $url = $this->instanceUrl() . '/mark_uncollectible';
141
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
142
+ $this->refreshFrom($response, $opts);
143
+ return $this;
144
  }
145
 
146
  /**
147
  * @param array|null $params
148
  * @param array|string|null $opts
149
  *
150
+ * @return Invoice The paid invoice.
151
  */
152
+ public function pay($params = null, $opts = null)
153
  {
154
+ $url = $this->instanceUrl() . '/pay';
155
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
156
+ $this->refreshFrom($response, $opts);
157
+ return $this;
158
  }
159
 
160
  /**
 
161
  * @param array|null $params
162
+ * @param array|string|null $opts
163
  *
164
+ * @return Invoice The sent invoice.
165
  */
166
+ public function sendInvoice($params = null, $opts = null)
167
  {
168
+ $url = $this->instanceUrl() . '/send';
169
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
170
+ $this->refreshFrom($response, $opts);
171
+ return $this;
172
  }
173
 
174
  /**
187
  }
188
 
189
  /**
190
+ * @param array|null $params
191
  * @param array|string|null $opts
192
  *
193
+ * @return Invoice The voided invoice.
 
 
 
 
 
 
 
 
194
  */
195
+ public function voidInvoice($params = null, $opts = null)
196
  {
197
+ $url = $this->instanceUrl() . '/void';
198
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
199
  $this->refreshFrom($response, $opts);
200
  return $this;
201
  }
app/api/Stripe/InvoiceItem.php CHANGED
@@ -5,73 +5,35 @@ namespace Stripe;
5
  /**
6
  * Class InvoiceItem
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class InvoiceItem extends ApiResource
11
  {
12
- /**
13
- * @param string $id The ID of the invoice item to retrieve.
14
- * @param array|string|null $opts
15
- *
16
- * @return InvoiceItem
17
- */
18
- public static function retrieve($id, $opts = null)
19
- {
20
- return self::_retrieve($id, $opts);
21
- }
22
-
23
- /**
24
- * @param array|null $params
25
- * @param array|string|null $opts
26
- *
27
- * @return Collection of InvoiceItems
28
- */
29
- public static function all($params = null, $opts = null)
30
- {
31
- return self::_all($params, $opts);
32
- }
33
-
34
- /**
35
- * @param array|null $params
36
- * @param array|string|null $opts
37
- *
38
- * @return InvoiceItem The created invoice item.
39
- */
40
- public static function create($params = null, $opts = null)
41
- {
42
- return self::_create($params, $opts);
43
- }
44
-
45
- /**
46
- * @param string $id The ID of the invoice item to update.
47
- * @param array|null $params
48
- * @param array|string|null $options
49
- *
50
- * @return InvoiceItem The updated invoice item.
51
- */
52
- public static function update($id, $params = null, $options = null)
53
- {
54
- return self::_update($id, $params, $options);
55
- }
56
-
57
- /**
58
- * @param array|string|null $opts
59
- *
60
- * @return InvoiceItem The saved invoice item.
61
- */
62
- public function save($opts = null)
63
- {
64
- return $this->_save($opts);
65
- }
66
 
67
- /**
68
- * @param array|null $params
69
- * @param array|string|null $opts
70
- *
71
- * @return InvoiceItem The deleted invoice item.
72
- */
73
- public function delete($params = null, $opts = null)
74
- {
75
- return $this->_delete($params, $opts);
76
- }
77
  }
5
  /**
6
  * Class InvoiceItem
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property string $currency
12
+ * @property string $customer
13
+ * @property int $date
14
+ * @property string $description
15
+ * @property bool $discountable
16
+ * @property string $invoice
17
+ * @property bool $livemode
18
+ * @property StripeObject $metadata
19
+ * @property mixed $period
20
+ * @property Plan $plan
21
+ * @property bool $proration
22
+ * @property int $quantity
23
+ * @property string $subscription
24
+ * @property string $subscription_item
25
+ * @property array $tax_rates
26
+ * @property int $unit_amount
27
+ *
28
  * @package Stripe
29
  */
30
  class InvoiceItem extends ApiResource
31
  {
32
+ const OBJECT_NAME = "invoiceitem";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
+ use ApiOperations\All;
35
+ use ApiOperations\Create;
36
+ use ApiOperations\Delete;
37
+ use ApiOperations\Retrieve;
38
+ use ApiOperations\Update;
 
 
 
 
 
39
  }
app/api/Stripe/InvoiceLineItem.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class InvoiceLineItem
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property string $currency
12
+ * @property string $description
13
+ * @property bool $discountable
14
+ * @property string $invoice_item
15
+ * @property bool $livemode
16
+ * @property StripeObject $metadata
17
+ * @property mixed $period
18
+ * @property Plan $plan
19
+ * @property bool $proration
20
+ * @property int $quantity
21
+ * @property string $subscription
22
+ * @property string $subscription_item
23
+ * @property array $tax_amounts
24
+ * @property array $tax_rates
25
+ * @property string $type
26
+ *
27
+ * @package Stripe
28
+ */
29
+ class InvoiceLineItem extends ApiResource
30
+ {
31
+ const OBJECT_NAME = "line_item";
32
+ }
app/api/Stripe/IssuerFraudRecord.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class IssuerFraudRecord
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $charge
11
+ * @property int $created
12
+ * @property int $post_date
13
+ * @property string $fraud_type
14
+ * @property bool $livemode
15
+ *
16
+ * @package Stripe
17
+ */
18
+ class IssuerFraudRecord extends ApiResource
19
+ {
20
+ const OBJECT_NAME = "issuer_fraud_record";
21
+
22
+ use ApiOperations\All;
23
+ use ApiOperations\Retrieve;
24
+ }
app/api/Stripe/Issuing/Authorization.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Issuing;
4
+
5
+ /**
6
+ * Class Authorization
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property bool $approved
11
+ * @property string $authorization_method
12
+ * @property int $authorized_amount
13
+ * @property string $authorized_currency
14
+ * @property \Stripe\Collection $balance_transactions
15
+ * @property Card $card
16
+ * @property Cardholder $cardholder
17
+ * @property int $created
18
+ * @property int $held_amount
19
+ * @property string $held_currency
20
+ * @property bool $is_held_amount_controllable
21
+ * @property bool $livemode
22
+ * @property mixed $merchant_data
23
+ * @property \Stripe\StripeObject $metadata
24
+ * @property int $pending_authorized_amount
25
+ * @property int $pending_held_amount
26
+ * @property mixed $request_history
27
+ * @property string $status
28
+ * @property \Stripe\Collection $transactions
29
+ * @property mixed $verification_data
30
+ *
31
+ * @package Stripe\Issuing
32
+ */
33
+ class Authorization extends \Stripe\ApiResource
34
+ {
35
+ const OBJECT_NAME = "issuing.authorization";
36
+
37
+ use \Stripe\ApiOperations\All;
38
+ use \Stripe\ApiOperations\Retrieve;
39
+ use \Stripe\ApiOperations\Update;
40
+
41
+ /**
42
+ * @param array|null $params
43
+ * @param array|string|null $options
44
+ *
45
+ * @return Authorization The approved authorization.
46
+ */
47
+ public function approve($params = null, $options = null)
48
+ {
49
+ $url = $this->instanceUrl() . '/approve';
50
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
51
+ $this->refreshFrom($response, $opts);
52
+ return $this;
53
+ }
54
+
55
+ /**
56
+ * @param array|null $params
57
+ * @param array|string|null $options
58
+ *
59
+ * @return Authorization The declined authorization.
60
+ */
61
+ public function decline($params = null, $options = null)
62
+ {
63
+ $url = $this->instanceUrl() . '/decline';
64
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
65
+ $this->refreshFrom($response, $opts);
66
+ return $this;
67
+ }
68
+ }
app/api/Stripe/Issuing/Card.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Issuing;
4
+
5
+ /**
6
+ * Class Card
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property mixed $authorization_controls
11
+ * @property mixed $billing
12
+ * @property string $brand
13
+ * @property Cardholder $cardholder
14
+ * @property int $created
15
+ * @property string $currency
16
+ * @property int $exp_month
17
+ * @property int $exp_year
18
+ * @property string $last4
19
+ * @property bool $livemode
20
+ * @property \Stripe\StripeObject $metadata
21
+ * @property string $name
22
+ * @property mixed $shipping
23
+ * @property string $status
24
+ * @property string $type
25
+ *
26
+ * @package Stripe\Issuing
27
+ */
28
+ class Card extends \Stripe\ApiResource
29
+ {
30
+ const OBJECT_NAME = "issuing.card";
31
+
32
+ use \Stripe\ApiOperations\All;
33
+ use \Stripe\ApiOperations\Create;
34
+ use \Stripe\ApiOperations\Retrieve;
35
+ use \Stripe\ApiOperations\Update;
36
+
37
+ /**
38
+ * @param array|null $params
39
+ * @param array|string|null $options
40
+ *
41
+ * @return CardDetails The card details associated with that issuing card.
42
+ */
43
+ public function details($params = null, $options = null)
44
+ {
45
+ $url = $this->instanceUrl() . '/details';
46
+ list($response, $opts) = $this->_request('get', $url, $params, $options);
47
+ $obj = \Stripe\Util\Util::convertToStripeObject($response, $opts);
48
+ $obj->setLastResponse($response);
49
+ return $obj;
50
+ }
51
+ }
app/api/Stripe/Issuing/CardDetails.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Issuing;
4
+
5
+ /**
6
+ * Class CardDetails
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property Card $card
11
+ * @property string $cvc
12
+ * @property int $exp_month
13
+ * @property int $exp_year
14
+ * @property string $number
15
+ *
16
+ * @package Stripe\Issuing
17
+ */
18
+ class CardDetails extends \Stripe\ApiResource
19
+ {
20
+ const OBJECT_NAME = "issuing.card_details";
21
+ }
app/api/Stripe/Issuing/Cardholder.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Issuing;
4
+
5
+ /**
6
+ * Class Cardholder
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property mixed $billing
11
+ * @property int $created
12
+ * @property string $email
13
+ * @property bool $livemode
14
+ * @property \Stripe\StripeObject $metadata
15
+ * @property string $name
16
+ * @property string $phone_number
17
+ * @property string $status
18
+ * @property string $type
19
+ *
20
+ * @package Stripe\Issuing
21
+ */
22
+ class Cardholder extends \Stripe\ApiResource
23
+ {
24
+ const OBJECT_NAME = "issuing.cardholder";
25
+
26
+ use \Stripe\ApiOperations\All;
27
+ use \Stripe\ApiOperations\Create;
28
+ use \Stripe\ApiOperations\Retrieve;
29
+ use \Stripe\ApiOperations\Update;
30
+ }
app/api/Stripe/Issuing/Dispute.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Issuing;
4
+
5
+ /**
6
+ * Class Dispute
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $created
12
+ * @property string $currency
13
+ * @property mixed $evidence
14
+ * @property bool $livemode
15
+ * @property \Stripe\StripeObject $metadata
16
+ * @property string $reason
17
+ * @property string $status
18
+ * @property Transaction $transaction
19
+ *
20
+ * @package Stripe\Issuing
21
+ */
22
+ class Dispute extends \Stripe\ApiResource
23
+ {
24
+ const OBJECT_NAME = "issuing.dispute";
25
+
26
+ use \Stripe\ApiOperations\All;
27
+ use \Stripe\ApiOperations\Create;
28
+ use \Stripe\ApiOperations\Retrieve;
29
+ use \Stripe\ApiOperations\Update;
30
+ }
app/api/Stripe/Issuing/Transaction.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Issuing;
4
+
5
+ /**
6
+ * Class Transaction
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property string $authorization
12
+ * @property string $balance_transaction
13
+ * @property string $card
14
+ * @property string $cardholder
15
+ * @property int $created
16
+ * @property string $currency
17
+ * @property string $dispute
18
+ * @property bool $livemode
19
+ * @property mixed $merchant_data
20
+ * @property int $merchant_amount
21
+ * @property string $merchant_currency
22
+ * @property \Stripe\StripeObject $metadata
23
+ * @property string $type
24
+ *
25
+ * @package Stripe\Issuing
26
+ */
27
+ class Transaction extends \Stripe\ApiResource
28
+ {
29
+ const OBJECT_NAME = "issuing.transaction";
30
+
31
+ use \Stripe\ApiOperations\All;
32
+ use \Stripe\ApiOperations\Create;
33
+ use \Stripe\ApiOperations\Retrieve;
34
+ use \Stripe\ApiOperations\Update;
35
+ }
app/api/Stripe/JsonSerializable.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
-
3
- namespace Stripe;
4
-
5
- // JsonSerializable only exists in PHP 5.4+. Stub if out if it doesn't exist
6
- if (interface_exists('\JsonSerializable', false)) {
7
- interface JsonSerializable extends \JsonSerializable
8
- {
9
- }
10
- } else {
11
- // PSR2 wants each interface to have its own file.
12
- // @codingStandardsIgnoreStart
13
- interface JsonSerializable
14
- {
15
- // @codingStandardsIgnoreEnd
16
- public function jsonSerialize();
17
- }
18
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/api/Stripe/LoginLink.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class LoginLink
7
+ *
8
+ * @property string $object
9
+ * @property int $created
10
+ * @property string $url
11
+ *
12
+ * @package Stripe
13
+ */
14
+ class LoginLink extends ApiResource
15
+ {
16
+ const OBJECT_NAME = "login_link";
17
+ }
app/api/Stripe/OAuth.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ abstract class OAuth
6
+ {
7
+ /**
8
+ * Generates a URL to Stripe's OAuth form.
9
+ *
10
+ * @param array|null $params
11
+ * @param array|null $opts
12
+ *
13
+ * @return string The URL to Stripe's OAuth form.
14
+ */
15
+ public static function authorizeUrl($params = null, $opts = null)
16
+ {
17
+ $params = $params ?: [];
18
+
19
+ $base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
20
+
21
+ $params['client_id'] = self::_getClientId($params);
22
+ if (!array_key_exists('response_type', $params)) {
23
+ $params['response_type'] = 'code';
24
+ }
25
+ $query = Util\Util::encodeParameters($params);
26
+
27
+ return $base . '/oauth/authorize?' . $query;
28
+ }
29
+
30
+ /**
31
+ * Use an authoriztion code to connect an account to your platform and
32
+ * fetch the user's credentials.
33
+ *
34
+ * @param array|null $params
35
+ * @param array|null $opts
36
+ *
37
+ * @return StripeObject Object containing the response from the API.
38
+ */
39
+ public static function token($params = null, $opts = null)
40
+ {
41
+ $base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
42
+ $requestor = new ApiRequestor(null, $base);
43
+ list($response, $apiKey) = $requestor->request(
44
+ 'post',
45
+ '/oauth/token',
46
+ $params,
47
+ null
48
+ );
49
+ return Util\Util::convertToStripeObject($response->json, $opts);
50
+ }
51
+
52
+ /**
53
+ * Disconnects an account from your platform.
54
+ *
55
+ * @param array|null $params
56
+ * @param array|null $opts
57
+ *
58
+ * @return StripeObject Object containing the response from the API.
59
+ */
60
+ public static function deauthorize($params = null, $opts = null)
61
+ {
62
+ $params = $params ?: [];
63
+ $base = ($opts && array_key_exists('connect_base', $opts)) ? $opts['connect_base'] : Stripe::$connectBase;
64
+ $requestor = new ApiRequestor(null, $base);
65
+ $params['client_id'] = self::_getClientId($params);
66
+ list($response, $apiKey) = $requestor->request(
67
+ 'post',
68
+ '/oauth/deauthorize',
69
+ $params,
70
+ null
71
+ );
72
+ return Util\Util::convertToStripeObject($response->json, $opts);
73
+ }
74
+
75
+ private static function _getClientId($params = null)
76
+ {
77
+ $clientId = ($params && array_key_exists('client_id', $params)) ? $params['client_id'] : null;
78
+ if ($clientId === null) {
79
+ $clientId = Stripe::getClientId();
80
+ }
81
+ if ($clientId === null) {
82
+ $msg = 'No client_id provided. (HINT: set your client_id using '
83
+ . '"Stripe::setClientId(<CLIENT-ID>)". You can find your client_ids '
84
+ . 'in your Stripe dashboard at '
85
+ . 'https://dashboard.stripe.com/account/applications/settings, '
86
+ . 'after registering your account as a platform. See '
87
+ . 'https://stripe.com/docs/connect/standard-accounts for details, '
88
+ . 'or email support@stripe.com if you have any questions.';
89
+ throw new Error\Authentication($msg);
90
+ }
91
+ return $clientId;
92
+ }
93
+ }
app/api/Stripe/Order.php CHANGED
@@ -5,64 +5,40 @@ namespace Stripe;
5
  /**
6
  * Class Order
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class Order extends ApiResource
11
  {
12
- /**
13
- * @param string $id The ID of the Order to retrieve.
14
- * @param array|string|null $opts
15
- *
16
- * @return Order
17
- */
18
- public static function retrieve($id, $opts = null)
19
- {
20
- return self::_retrieve($id, $opts);
21
- }
22
-
23
- /**
24
- * @param array|null $params
25
- * @param array|string|null $opts
26
- *
27
- * @return Order The created Order.
28
- */
29
- public static function create($params = null, $opts = null)
30
- {
31
- return self::_create($params, $opts);
32
- }
33
-
34
- /**
35
- * @param string $id The ID of the order to update.
36
- * @param array|null $params
37
- * @param array|string|null $options
38
- *
39
- * @return Order The updated order.
40
- */
41
- public static function update($id, $params = null, $options = null)
42
- {
43
- return self::_update($id, $params, $options);
44
- }
45
-
46
- /**
47
- * @param array|string|null $opts
48
- *
49
- * @return Order The saved Order.
50
- */
51
- public function save($opts = null)
52
- {
53
- return $this->_save($opts);
54
- }
55
 
56
- /**
57
- * @param array|null $params
58
- * @param array|string|null $opts
59
- *
60
- * @return Collection of Orders
61
- */
62
- public static function all($params = null, $opts = null)
63
- {
64
- return self::_all($params, $opts);
65
- }
66
 
67
  /**
68
  * @return Order The paid order.
5
  /**
6
  * Class Order
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $amount_returned
12
+ * @property string $application
13
+ * @property int $application_fee
14
+ * @property string $charge
15
+ * @property int $created
16
+ * @property string $currency
17
+ * @property string $customer
18
+ * @property string $email
19
+ * @property string $external_coupon_code
20
+ * @property OrderItem[] $items
21
+ * @property bool $livemode
22
+ * @property StripeObject $metadata
23
+ * @property Collection $returns
24
+ * @property string $selected_shipping_method
25
+ * @property mixed $shipping
26
+ * @property array $shipping_methods
27
+ * @property string $status
28
+ * @property mixed $status_transitions
29
+ * @property int $updated
30
+ * @property string $upstream_id
31
+ *
32
  * @package Stripe
33
  */
34
  class Order extends ApiResource
35
  {
36
+ const OBJECT_NAME = "order";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
+ use ApiOperations\All;
39
+ use ApiOperations\Create;
40
+ use ApiOperations\Retrieve;
41
+ use ApiOperations\Update;
 
 
 
 
 
 
42
 
43
  /**
44
  * @return Order The paid order.
app/api/Stripe/OrderItem.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class OrderItem
7
+ *
8
+ * @property string $object
9
+ * @property int $amount
10
+ * @property string $currency
11
+ * @property string $description
12
+ * @property string $parent
13
+ * @property int $quantity
14
+ * @property string $type
15
+ *
16
+ * @package Stripe
17
+ */
18
+ class OrderItem extends StripeObject
19
+ {
20
+ const OBJECT_NAME = "order_item";
21
+ }
app/api/Stripe/OrderReturn.php CHANGED
@@ -5,29 +5,22 @@ namespace Stripe;
5
  /**
6
  * Class OrderReturn
7
  *
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class OrderReturn extends ApiResource
11
  {
12
- /**
13
- * @param string $id The ID of the OrderReturn to retrieve.
14
- * @param array|string|null $opts
15
- *
16
- * @return Order
17
- */
18
- public static function retrieve($id, $opts = null)
19
- {
20
- return self::_retrieve($id, $opts);
21
- }
22
 
23
- /**
24
- * @param array|null $params
25
- * @param array|string|null $opts
26
- *
27
- * @return Collection of OrderReturns
28
- */
29
- public static function all($params = null, $opts = null)
30
- {
31
- return self::_all($params, $opts);
32
- }
33
  }
5
  /**
6
  * Class OrderReturn
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $created
12
+ * @property string $currency
13
+ * @property OrderItem[] $items
14
+ * @property bool $livemode
15
+ * @property string $order
16
+ * @property string $refund
17
+ *
18
  * @package Stripe
19
  */
20
  class OrderReturn extends ApiResource
21
  {
22
+ const OBJECT_NAME = "order_return";
 
 
 
 
 
 
 
 
 
23
 
24
+ use ApiOperations\All;
25
+ use ApiOperations\Retrieve;
 
 
 
 
 
 
 
 
26
  }
app/api/Stripe/PaymentIntent.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class PaymentIntent
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $amount_capturable
12
+ * @property int $amount_received
13
+ * @property string $application
14
+ * @property int $application_fee_amount
15
+ * @property int $canceled_at
16
+ * @property string $cancellation_reason
17
+ * @property string $capture_method
18
+ * @property Collection $charges
19
+ * @property string $client_secret
20
+ * @property string $confirmation_method
21
+ * @property int $created
22
+ * @property string $currency
23
+ * @property string $customer
24
+ * @property string $description
25
+ * @property mixed $last_payment_error
26
+ * @property bool $livemode
27
+ * @property StripeObject $metadata
28
+ * @property mixed $next_action
29
+ * @property string $on_behalf_of
30
+ * @property string $payment_method
31
+ * @property string[] $payment_method_types
32
+ * @property string $receipt_email
33
+ * @property string $review
34
+ * @property mixed $shipping
35
+ * @property string $source
36
+ * @property string $statement_descriptor
37
+ * @property string $status
38
+ * @property mixed $transfer_data
39
+ * @property string $transfer_group
40
+ *
41
+ * @package Stripe
42
+ */
43
+ class PaymentIntent extends ApiResource
44
+ {
45
+ const OBJECT_NAME = "payment_intent";
46
+
47
+ use ApiOperations\All;
48
+ use ApiOperations\Create;
49
+ use ApiOperations\Retrieve;
50
+ use ApiOperations\Update;
51
+
52
+ /**
53
+ * These constants are possible representations of the status field.
54
+ *
55
+ * @link https://stripe.com/docs/api/payment_intents/object#payment_intent_object-status
56
+ */
57
+ const STATUS_CANCELED = 'canceled';
58
+ const STATUS_PROCESSING = 'processing';
59
+ const STATUS_REQUIRES_ACTION = 'requires_action';
60
+ const STATUS_REQUIRES_CAPTURE = 'requires_capture';
61
+ const STATUS_REQUIRES_CONFIRMATION = 'requires_confirmation';
62
+ const STATUS_REQUIRES_PAYMENT_METHOD = 'requires_payment_method';
63
+ const STATUS_SUCCEEDED = 'succeeded';
64
+
65
+ /**
66
+ * @param array|null $params
67
+ * @param array|string|null $options
68
+ *
69
+ * @return PaymentIntent The canceled payment intent.
70
+ */
71
+ public function cancel($params = null, $options = null)
72
+ {
73
+ $url = $this->instanceUrl() . '/cancel';
74
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
75
+ $this->refreshFrom($response, $opts);
76
+ return $this;
77
+ }
78
+
79
+ /**
80
+ * @param array|null $params
81
+ * @param array|string|null $options
82
+ *
83
+ * @return PaymentIntent The captured payment intent.
84
+ */
85
+ public function capture($params = null, $options = null)
86
+ {
87
+ $url = $this->instanceUrl() . '/capture';
88
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
89
+ $this->refreshFrom($response, $opts);
90
+ return $this;
91
+ }
92
+
93
+ /**
94
+ * @param array|null $params
95
+ * @param array|string|null $options
96
+ *
97
+ * @return PaymentIntent The confirmed payment intent.
98
+ */
99
+ public function confirm($params = null, $options = null)
100
+ {
101
+ $url = $this->instanceUrl() . '/confirm';
102
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
103
+ $this->refreshFrom($response, $opts);
104
+ return $this;
105
+ }
106
+ }
app/api/Stripe/PaymentMethod.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class PaymentMethod
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property mixed $billing_details
11
+ * @property mixed $card
12
+ * @property mixed $card_present
13
+ * @property int $created
14
+ * @property string $customer
15
+ * @property mixed $ideal
16
+ * @property bool $livemode
17
+ * @property StripeObject $metadata
18
+ * @property mixed $sepa_debit
19
+ * @property string $type
20
+ *
21
+ * @package Stripe
22
+ */
23
+ class PaymentMethod extends ApiResource
24
+ {
25
+ const OBJECT_NAME = "payment_method";
26
+
27
+ use ApiOperations\All;
28
+ use ApiOperations\Create;
29
+ use ApiOperations\Retrieve;
30
+ use ApiOperations\Update;
31
+
32
+ /**
33
+ * @param array|null $params
34
+ * @param array|string|null $opts
35
+ *
36
+ * @return PaymentMethod The attached payment method.
37
+ */
38
+ public function attach($params = null, $opts = null)
39
+ {
40
+ $url = $this->instanceUrl() . '/attach';
41
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
42
+ $this->refreshFrom($response, $opts);
43
+ return $this;
44
+ }
45
+
46
+ /**
47
+ * @param array|null $params
48
+ * @param array|string|null $opts
49
+ *
50
+ * @return PaymentMethod The detached payment method.
51
+ */
52
+ public function detach($params = null, $opts = null)
53
+ {
54
+ $url = $this->instanceUrl() . '/detach';
55
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
56
+ $this->refreshFrom($response, $opts);
57
+ return $this;
58
+ }
59
+ }
app/api/Stripe/Payout.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Payout
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $arrival_date
12
+ * @property bool $automatic
13
+ * @property string $balance_transaction
14
+ * @property int $created
15
+ * @property string $currency
16
+ * @property string $description
17
+ * @property string $destination
18
+ * @property string $failure_balance_transaction
19
+ * @property string $failure_code
20
+ * @property string $failure_message
21
+ * @property bool $livemode
22
+ * @property StripeObject $metadata
23
+ * @property string $method
24
+ * @property string $source_type
25
+ * @property string $statement_descriptor
26
+ * @property string $status
27
+ * @property string $type
28
+ *
29
+ * @package Stripe
30
+ */
31
+ class Payout extends ApiResource
32
+ {
33
+ const OBJECT_NAME = "payout";
34
+
35
+ use ApiOperations\All;
36
+ use ApiOperations\Create;
37
+ use ApiOperations\Retrieve;
38
+ use ApiOperations\Update;
39
+
40
+ /**
41
+ * Types of payout failure codes.
42
+ * @link https://stripe.com/docs/api#payout_failures
43
+ */
44
+ const FAILURE_ACCOUNT_CLOSED = 'account_closed';
45
+ const FAILURE_ACCOUNT_FROZEN = 'account_frozen';
46
+ const FAILURE_BANK_ACCOUNT_RESTRICTED = 'bank_account_restricted';
47
+ const FAILURE_BANK_OWNERSHIP_CHANGED = 'bank_ownership_changed';
48
+ const FAILURE_COULD_NOT_PROCESS = 'could_not_process';
49
+ const FAILURE_DEBIT_NOT_AUTHORIZED = 'debit_not_authorized';
50
+ const FAILURE_DECLINED = 'declined';
51
+ const FAILURE_INCORRECT_ACCOUNT_HOLDER_NAME = 'incorrect_account_holder_name';
52
+ const FAILURE_INSUFFICIENT_FUNDS = 'insufficient_funds';
53
+ const FAILURE_INVALID_ACCOUNT_NUMBER = 'invalid_account_number';
54
+ const FAILURE_INVALID_CURRENCY = 'invalid_currency';
55
+ const FAILURE_NO_ACCOUNT = 'no_account';
56
+ const FAILURE_UNSUPPORTED_CARD = 'unsupported_card';
57
+
58
+ /**
59
+ * Possible string representations of the payout methods.
60
+ * @link https://stripe.com/docs/api/payouts/object#payout_object-method
61
+ */
62
+ const METHOD_STANDARD = 'standard';
63
+ const METHOD_INSTANT = 'instant';
64
+
65
+ /**
66
+ * Possible string representations of the status of the payout.
67
+ * @link https://stripe.com/docs/api/payouts/object#payout_object-status
68
+ */
69
+ const STATUS_CANCELED = 'canceled';
70
+ const STATUS_IN_TRANSIT = 'in_transit';
71
+ const STATUS_FAILED = 'failed';
72
+ const STATUS_PAID = 'paid';
73
+ const STATUS_PENDING = 'pending';
74
+
75
+ /**
76
+ * Possible string representations of the type of payout.
77
+ * @link https://stripe.com/docs/api/payouts/object#payout_object-type
78
+ */
79
+ const TYPE_BANK_ACCOUNT = 'bank_account';
80
+ const TYPE_CARD = 'card';
81
+
82
+ /**
83
+ * @return Payout The canceled payout.
84
+ */
85
+ public function cancel()
86
+ {
87
+ $url = $this->instanceUrl() . '/cancel';
88
+ list($response, $opts) = $this->_request('post', $url);
89
+ $this->refreshFrom($response, $opts);
90
+ return $this;
91
+ }
92
+ }
app/api/Stripe/Person.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Person
7
+ *
8
+ * @package Stripe
9
+ *
10
+ * @property string $id
11
+ * @property string $object
12
+ * @property string $account
13
+ * @property mixed $address
14
+ * @property mixed $address_kana
15
+ * @property mixed $address_kanji
16
+ * @property int $created
17
+ * @property bool $deleted
18
+ * @property mixed $dob
19
+ * @property string $email
20
+ * @property string $first_name
21
+ * @property string $first_name_kana
22
+ * @property string $first_name_kanji
23
+ * @property string $gender
24
+ * @property bool $id_number_provided
25
+ * @property string $last_name
26
+ * @property string $last_name_kana
27
+ * @property string $last_name_kanji
28
+ * @property string $maiden_name
29
+ * @property StripeObject $metadata
30
+ * @property string $phone
31
+ * @property mixed $relationship
32
+ * @property mixed $requirements
33
+ * @property bool $ssn_last_4_provided
34
+ * @property mixed $verification
35
+ */
36
+ class Person extends ApiResource
37
+ {
38
+ const OBJECT_NAME = "person";
39
+
40
+ use ApiOperations\Delete;
41
+ use ApiOperations\Update;
42
+
43
+ /**
44
+ * Possible string representations of a person's gender.
45
+ * @link https://stripe.com/docs/api/persons/object#person_object-gender
46
+ */
47
+ const GENDER_MALE = 'male';
48
+ const GENDER_FEMALE = 'female';
49
+
50
+ /**
51
+ * Possible string representations of a person's verification status.
52
+ * @link https://stripe.com/docs/api/persons/object#person_object-verification-status
53
+ */
54
+ const VERIFICATION_STATUS_PENDING = 'pending';
55
+ const VERIFICATION_STATUS_UNVERIFIED = 'unverified';
56
+ const VERIFICATION_STATUS_VERIFIED = 'verified';
57
+
58
+ /**
59
+ * @return string The API URL for this Stripe account reversal.
60
+ */
61
+ public function instanceUrl()
62
+ {
63
+ $id = $this['id'];
64
+ $account = $this['account'];
65
+ if (!$id) {
66
+ throw new Error\InvalidRequest(
67
+ "Could not determine which URL to request: " .
68
+ "class instance has invalid ID: $id",
69
+ null
70
+ );
71
+ }
72
+ $id = Util\Util::utf8($id);
73
+ $account = Util\Util::utf8($account);
74
+
75
+ $base = Account::classUrl();
76
+ $accountExtn = urlencode($account);
77
+ $extn = urlencode($id);
78
+ return "$base/$accountExtn/persons/$extn";
79
+ }
80
+
81
+ /**
82
+ * @param array|string $_id
83
+ * @param array|string|null $_opts
84
+ *
85
+ * @throws \Stripe\Error\InvalidRequest
86
+ */
87
+ public static function retrieve($_id, $_opts = null)
88
+ {
89
+ $msg = "Persons cannot be accessed without an account ID. " .
90
+ "Retrieve a Person using \$account->retrievePerson('person_id') instead.";
91
+ throw new Error\InvalidRequest($msg, null);
92
+ }
93
+
94
+ /**
95
+ * @param string $_id
96
+ * @param array|null $_params
97
+ * @param array|string|null $_options
98
+ *
99
+ * @throws \Stripe\Error\InvalidRequest
100
+ */
101
+ public static function update($_id, $_params = null, $_options = null)
102
+ {
103
+ $msg = "Persons cannot be accessed without an account ID. " .
104
+ "Retrieve a Person using \$account->retrievePerson('person_id') instead.";
105
+ throw new Error\InvalidRequest($msg, null);
106
+ }
107
+ }
app/api/Stripe/Plan.php CHANGED
@@ -7,84 +7,33 @@ namespace Stripe;
7
  *
8
  * @package Stripe
9
  *
10
- * @property $id
11
- * @property $object
12
- * @property $amount
13
- * @property $created
14
- * @property $currency
15
- * @property $interval
16
- * @property $interval_count
17
- * @property $livemode
18
- * @property AttachedObject $metadata
19
- * @property $name
20
- * @property $statement_descriptor
21
- * @property $trial_period_days
 
 
 
 
 
 
 
22
  */
23
  class Plan extends ApiResource
24
  {
25
- /**
26
- * @param string $id The ID of the plan to retrieve.
27
- * @param array|string|null $opts
28
- *
29
- * @return Plan
30
- */
31
- public static function retrieve($id, $opts = null)
32
- {
33
- return self::_retrieve($id, $opts);
34
- }
35
 
36
- /**
37
- * @param array|null $params
38
- * @param array|string|null $opts
39
- *
40
- * @return Plan The created plan.
41
- */
42
- public static function create($params = null, $opts = null)
43
- {
44
- return self::_create($params, $opts);
45
- }
46
-
47
- /**
48
- * @param string $id The ID of the plan to update.
49
- * @param array|null $params
50
- * @param array|string|null $options
51
- *
52
- * @return Plan The updated plan.
53
- */
54
- public static function update($id, $params = null, $options = null)
55
- {
56
- return self::_update($id, $params, $options);
57
- }
58
-
59
- /**
60
- * @param array|null $params
61
- * @param array|string|null $opts
62
- *
63
- * @return Plan The deleted plan.
64
- */
65
- public function delete($params = null, $opts = null)
66
- {
67
- return $this->_delete($params, $opts);
68
- }
69
-
70
- /**
71
- * @param array|string|null $opts
72
- *
73
- * @return Plan The saved plan.
74
- */
75
- public function save($opts = null)
76
- {
77
- return $this->_save($opts);
78
- }
79
-
80
- /**
81
- * @param array|null $params
82
- * @param array|string|null $opts
83
- *
84
- * @return Collection of Plans
85
- */
86
- public static function all($params = null, $opts = null)
87
- {
88
- return self::_all($params, $opts);
89
- }
90
  }
7
  *
8
  * @package Stripe
9
  *
10
+ * @property string $id
11
+ * @property string $object
12
+ * @property bool $active
13
+ * @property string $aggregate_usage
14
+ * @property int $amount
15
+ * @property string $billing_scheme
16
+ * @property int $created
17
+ * @property string $currency
18
+ * @property string $interval
19
+ * @property int $interval_count
20
+ * @property bool $livemode
21
+ * @property StripeObject $metadata
22
+ * @property string $nickname
23
+ * @property string $product
24
+ * @property mixed $tiers
25
+ * @property string $tiers_mode
26
+ * @property mixed $transform_usage
27
+ * @property int $trial_period_days
28
+ * @property string $usage_type
29
  */
30
  class Plan extends ApiResource
31
  {
32
+ const OBJECT_NAME = "plan";
 
 
 
 
 
 
 
 
 
33
 
34
+ use ApiOperations\All;
35
+ use ApiOperations\Create;
36
+ use ApiOperations\Delete;
37
+ use ApiOperations\Retrieve;
38
+ use ApiOperations\Update;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  }
app/api/Stripe/Product.php CHANGED
@@ -5,73 +5,42 @@ namespace Stripe;
5
  /**
6
  * Class Product
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class Product extends ApiResource
11
  {
12
- /**
13
- * @param string $id The ID of the Product to retrieve.
14
- * @param array|string|null $opts
15
- *
16
- * @return Product
17
- */
18
- public static function retrieve($id, $opts = null)
19
- {
20
- return self::_retrieve($id, $opts);
21
- }
22
-
23
- /**
24
- * @param array|null $params
25
- * @param array|string|null $opts
26
- *
27
- * @return Product The created Product.
28
- */
29
- public static function create($params = null, $opts = null)
30
- {
31
- return self::_create($params, $opts);
32
- }
33
-
34
- /**
35
- * @param string $id The ID of the product to update.
36
- * @param array|null $params
37
- * @param array|string|null $options
38
- *
39
- * @return Product The updated product.
40
- */
41
- public static function update($id, $params = null, $options = null)
42
- {
43
- return self::_update($id, $params, $options);
44
- }
45
 
46
- /**
47
- * @param array|string|null $opts
48
- *
49
- * @return Product The saved Product.
50
- */
51
- public function save($opts = null)
52
- {
53
- return $this->_save($opts);
54
- }
55
-
56
- /**
57
- * @param array|null $params
58
- * @param array|string|null $opts
59
- *
60
- * @return Collection of Products
61
- */
62
- public static function all($params = null, $opts = null)
63
- {
64
- return self::_all($params, $opts);
65
- }
66
 
67
  /**
68
- * @param array|null $params
69
- * @param array|string|null $opts
70
- *
71
- * @return Product The deleted product.
72
  */
73
- public function delete($params = null, $opts = null)
74
- {
75
- return $this->_delete($params, $opts);
76
- }
77
  }
5
  /**
6
  * Class Product
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property bool $active
11
+ * @property string[] $attributes
12
+ * @property string $caption
13
+ * @property int $created
14
+ * @property string[] $deactivate_on
15
+ * @property string $description
16
+ * @property string[] $images
17
+ * @property bool $livemode
18
+ * @property StripeObject $metadata
19
+ * @property string $name
20
+ * @property mixed $package_dimensions
21
+ * @property bool $shippable
22
+ * @property string $statement_descriptor
23
+ * @property string $type
24
+ * @property string $unit_label
25
+ * @property int $updated
26
+ * @property string $url
27
+ *
28
  * @package Stripe
29
  */
30
  class Product extends ApiResource
31
  {
32
+ const OBJECT_NAME = "product";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
+ use ApiOperations\All;
35
+ use ApiOperations\Create;
36
+ use ApiOperations\Delete;
37
+ use ApiOperations\Retrieve;
38
+ use ApiOperations\Update;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  /**
41
+ * Possible string representations of the type of product.
42
+ * @link https://stripe.com/docs/api/service_products/object#service_product_object-type
 
 
43
  */
44
+ const TYPE_GOOD = 'good';
45
+ const TYPE_SERVICE = 'service';
 
 
46
  }
app/api/Stripe/Radar/EarlyFraudWarning.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Radar;
4
+
5
+ /**
6
+ * Class EarlyFraudWarning
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property bool $actionable
11
+ * @property string $charge
12
+ * @property int $created
13
+ * @property string $fraud_type
14
+ * @property bool $livemode
15
+ *
16
+ * @package Stripe\Radar
17
+ */
18
+ class EarlyFraudWarning extends \Stripe\ApiResource
19
+ {
20
+ const OBJECT_NAME = "radar.early_fraud_warning";
21
+
22
+ use \Stripe\ApiOperations\All;
23
+ use \Stripe\ApiOperations\Retrieve;
24
+
25
+ /**
26
+ * Possible string representations of an early fraud warning's fraud type.
27
+ * @link https://stripe.com/docs/api/early_fraud_warnings/object#early_fraud_warning_object-fraud_type
28
+ */
29
+ const FRAUD_TYPE_CARD_NEVER_RECEIVED = 'card_never_received';
30
+ const FRAUD_TYPE_FRAUDULENT_CARD_APPLICATION = 'fraudulent_card_application';
31
+ const FRAUD_TYPE_MADE_WITH_COUNTERFEIT_CARD = 'made_with_counterfeit_card';
32
+ const FRAUD_TYPE_MADE_WITH_LOST_CARD = 'made_with_lost_card';
33
+ const FRAUD_TYPE_MADE_WITH_STOLEN_CARD = 'made_with_stolen_card';
34
+ const FRAUD_TYPE_MISC = 'misc';
35
+ const FRAUD_TYPE_UNAUTHORIZED_USE_OF_CARD = 'unauthorized_use_of_card';
36
+ }
app/api/Stripe/Radar/ValueList.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Radar;
4
+
5
+ /**
6
+ * Class ValueList
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $alias
11
+ * @property int $created
12
+ * @property string $created_by
13
+ * @property string $item_type
14
+ * @property Collection $list_items
15
+ * @property bool $livemode
16
+ * @property StripeObject $metadata
17
+ * @property mixed $name
18
+ * @property int $updated
19
+ * @property string $updated_by
20
+ *
21
+ * @package Stripe\Radar
22
+ */
23
+ class ValueList extends \Stripe\ApiResource
24
+ {
25
+ const OBJECT_NAME = "radar.value_list";
26
+
27
+ use \Stripe\ApiOperations\All;
28
+ use \Stripe\ApiOperations\Create;
29
+ use \Stripe\ApiOperations\Delete;
30
+ use \Stripe\ApiOperations\Retrieve;
31
+ use \Stripe\ApiOperations\Update;
32
+ }
app/api/Stripe/Radar/ValueListItem.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Radar;
4
+
5
+ /**
6
+ * Class ValueListItem
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $created
11
+ * @property string $created_by
12
+ * @property string $list
13
+ * @property bool $livemode
14
+ * @property string $value
15
+ *
16
+ * @package Stripe\Radar
17
+ */
18
+ class ValueListItem extends \Stripe\ApiResource
19
+ {
20
+ const OBJECT_NAME = "radar.value_list_item";
21
+
22
+ use \Stripe\ApiOperations\All;
23
+ use \Stripe\ApiOperations\Create;
24
+ use \Stripe\ApiOperations\Delete;
25
+ use \Stripe\ApiOperations\Retrieve;
26
+ }
app/api/Stripe/Recipient.php CHANGED
@@ -6,74 +6,31 @@ namespace Stripe;
6
  * Class Recipient
7
  *
8
  * @package Stripe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  */
10
  class Recipient extends ApiResource
11
  {
12
- /**
13
- * @param string $id The ID of the recipient to retrieve.
14
- * @param array|string|null $opts
15
- *
16
- * @return Recipient
17
- */
18
- public static function retrieve($id, $opts = null)
19
- {
20
- return self::_retrieve($id, $opts);
21
- }
22
-
23
- /**
24
- * @param array|null $params
25
- * @param array|string|null $opts
26
- *
27
- * @return Collection of Recipients
28
- */
29
- public static function all($params = null, $opts = null)
30
- {
31
- return self::_all($params, $opts);
32
- }
33
-
34
- /**
35
- * @param array|null $params
36
- * @param array|string|null $opts
37
- *
38
- * @return Recipient The created recipient.
39
- */
40
- public static function create($params = null, $opts = null)
41
- {
42
- return self::_create($params, $opts);
43
- }
44
-
45
- /**
46
- * @param string $id The ID of the recipient to update.
47
- * @param array|null $params
48
- * @param array|string|null $options
49
- *
50
- * @return Recipient The updated recipient.
51
- */
52
- public static function update($id, $params = null, $options = null)
53
- {
54
- return self::_update($id, $params, $options);
55
- }
56
-
57
- /**
58
- * @param array|string|null $opts
59
- *
60
- * @return Recipient The saved recipient.
61
- */
62
- public function save($opts = null)
63
- {
64
- return $this->_save($opts);
65
- }
66
-
67
- /**
68
- * @param array|null $params
69
- *
70
- * @return Recipient The deleted recipient.
71
- */
72
- public function delete($params = null, $opts = null)
73
- {
74
- return $this->_delete($params, $opts);
75
- }
76
 
 
 
 
 
 
77
 
78
  /**
79
  * @param array|null $params
@@ -82,9 +39,7 @@ class Recipient extends ApiResource
82
  */
83
  public function transfers($params = null)
84
  {
85
- if ($params === null) {
86
- $params = array();
87
- }
88
  $params['recipient'] = $this->id;
89
  $transfers = Transfer::all($params, $this->_opts);
90
  return $transfers;
6
  * Class Recipient
7
  *
8
  * @package Stripe
9
+ *
10
+ * @property string $id
11
+ * @property string $object
12
+ * @property mixed $active_account
13
+ * @property Collection $cards
14
+ * @property int $created
15
+ * @property string $default_card
16
+ * @property string $description
17
+ * @property string $email
18
+ * @property bool $livemode
19
+ * @property StripeObject $metadata
20
+ * @property string $migrated_to
21
+ * @property string $name
22
+ * @property string $rolled_back_from
23
+ * @property string $type
24
  */
25
  class Recipient extends ApiResource
26
  {
27
+ const OBJECT_NAME = "recipient";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
+ use ApiOperations\All;
30
+ use ApiOperations\Create;
31
+ use ApiOperations\Delete;
32
+ use ApiOperations\Retrieve;
33
+ use ApiOperations\Update;
34
 
35
  /**
36
  * @param array|null $params
39
  */
40
  public function transfers($params = null)
41
  {
42
+ $params = $params ?: [];
 
 
43
  $params['recipient'] = $this->id;
44
  $transfers = Transfer::all($params, $this->_opts);
45
  return $transfers;
app/api/Stripe/RecipientTransfer.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class RecipientTransfer
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $amount_reversed
12
+ * @property string $balance_transaction
13
+ * @property string $bank_account
14
+ * @property string $card
15
+ * @property int $created
16
+ * @property string $currency
17
+ * @property int $date
18
+ * @property string $description
19
+ * @property string $destination
20
+ * @property string $failure_code
21
+ * @property string $failure_message
22
+ * @property bool $livemode
23
+ * @property StripeObject $metadata
24
+ * @property string $method
25
+ * @property string $recipient
26
+ * @property mixed $reversals
27
+ * @property bool $reversed
28
+ * @property string $source_type
29
+ * @property string $statement_descriptor
30
+ * @property string $status
31
+ * @property string $type
32
+ *
33
+ * @package Stripe
34
+ */
35
+ class RecipientTransfer extends ApiResource
36
+ {
37
+ const OBJECT_NAME = "recipient_transfer";
38
+ }
app/api/Stripe/Refund.php CHANGED
@@ -8,72 +8,53 @@ namespace Stripe;
8
  * @property string $id
9
  * @property string $object
10
  * @property int $amount
11
- * @property mixed $balance_transaction
12
  * @property string $charge
13
  * @property int $created
14
  * @property string $currency
15
- * @property mixed $metadata
16
- * @property mixed $reason
17
- * @property mixed $receipt_number
 
 
 
 
18
  * @property string $status
 
19
  *
20
  * @package Stripe
21
  */
22
  class Refund extends ApiResource
23
  {
 
24
 
25
- /**
26
- * @param string $id The ID of the refund to retrieve.
27
- * @param array|string|null $options
28
- *
29
- * @return Refund
30
- */
31
- public static function retrieve($id, $options = null)
32
- {
33
- return self::_retrieve($id, $options);
34
- }
35
-
36
- /**
37
- * @param string $id The ID of the refund to update.
38
- * @param array|null $params
39
- * @param array|string|null $options
40
- *
41
- * @return Refund The updated refund.
42
- */
43
- public static function update($id, $params = null, $options = null)
44
- {
45
- return self::_update($id, $params, $options);
46
- }
47
 
48
  /**
49
- * @param array|null $params
50
- * @param array|string|null $options
51
- *
52
- * @return Collection of Refunds
53
  */
54
- public static function all($params = null, $options = null)
55
- {
56
- return self::_all($params, $options);
57
- }
58
 
59
  /**
60
- * @param array|null $params
61
- * @param array|string|null $options
62
- *
63
- * @return Refund The created refund.
64
  */
65
- public static function create($params = null, $options = null)
66
- {
67
- return self::_create($params, $options);
68
- }
69
 
70
  /**
71
- * @param array|string|null $opts
72
- *
73
- * @return Refund The saved refund.
74
  */
75
- public function save($opts = null)
76
- {
77
- return $this->_save($opts);
78
- }
79
  }
8
  * @property string $id
9
  * @property string $object
10
  * @property int $amount
11
+ * @property string $balance_transaction
12
  * @property string $charge
13
  * @property int $created
14
  * @property string $currency
15
+ * @property string $description
16
+ * @property string $failure_balance_transaction
17
+ * @property string $failure_reason
18
+ * @property StripeObject $metadata
19
+ * @property string $reason
20
+ * @property string $receipt_number
21
+ * @property string $source_transfer_reversal
22
  * @property string $status
23
+ * @property string $transfer_reversal
24
  *
25
  * @package Stripe
26
  */
27
  class Refund extends ApiResource
28
  {
29
+ const OBJECT_NAME = "refund";
30
 
31
+ use ApiOperations\All;
32
+ use ApiOperations\Create;
33
+ use ApiOperations\Retrieve;
34
+ use ApiOperations\Update;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
  /**
37
+ * Possible string representations of the failure reason.
38
+ * @link https://stripe.com/docs/api/refunds/object#refund_object-failure_reason
 
 
39
  */
40
+ const FAILURE_REASON = 'expired_or_canceled_card';
41
+ const FAILURE_REASON_LOST_OR_STOLEN_CARD = 'lost_or_stolen_card';
42
+ const FAILURE_REASON_UNKNOWN = 'unknown';
 
43
 
44
  /**
45
+ * Possible string representations of the refund reason.
46
+ * @link https://stripe.com/docs/api/refunds/object#refund_object-reason
 
 
47
  */
48
+ const REASON_DUPLICATE = 'duplicate';
49
+ const REASON_FRAUDULENT = 'fraudulent';
50
+ const REASON_REQUESTED_BY_CUSTOMER = 'requested_by_customer';
 
51
 
52
  /**
53
+ * Possible string representations of the refund status.
54
+ * @link https://stripe.com/docs/api/refunds/object#refund_object-status
 
55
  */
56
+ const STATUS_CANCELED = 'canceled';
57
+ const STATUS_FAILED = 'failed';
58
+ const STATUS_PENDING = 'pending';
59
+ const STATUS_SUCCEEDED = 'succeeded';
60
  }
app/api/Stripe/Reporting/ReportRun.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Reporting;
4
+
5
+ /**
6
+ * Class ReportRun
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $created
11
+ * @property string $error
12
+ * @property bool $livemode
13
+ * @property mixed $parameters
14
+ * @property string $report_type
15
+ * @property mixed $result
16
+ * @property string $status
17
+ * @property int $succeeded_at
18
+ *
19
+ * @package Stripe\Reporting
20
+ */
21
+ class ReportRun extends \Stripe\ApiResource
22
+ {
23
+ const OBJECT_NAME = "reporting.report_run";
24
+
25
+ use \Stripe\ApiOperations\All;
26
+ use \Stripe\ApiOperations\Create;
27
+ use \Stripe\ApiOperations\Retrieve;
28
+ }
app/api/Stripe/Reporting/ReportType.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Reporting;
4
+
5
+ /**
6
+ * Class ReportType
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $data_available_end
11
+ * @property int $data_available_start
12
+ * @property string $name
13
+ * @property int $updated
14
+ * @property string $version
15
+ *
16
+ * @package Stripe\Reporting
17
+ */
18
+ class ReportType extends \Stripe\ApiResource
19
+ {
20
+ const OBJECT_NAME = "reporting.report_type";
21
+
22
+ use \Stripe\ApiOperations\All;
23
+ use \Stripe\ApiOperations\Retrieve;
24
+ }
app/api/Stripe/RequestTelemetry.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class RequestTelemetry
7
+ *
8
+ * Tracks client request telemetry
9
+ * @package Stripe
10
+ */
11
+ class RequestTelemetry
12
+ {
13
+ public $requestId;
14
+ public $requestDuration;
15
+
16
+ /**
17
+ * Initialize a new telemetry object.
18
+ *
19
+ * @param string $requestId The request's request ID.
20
+ * @param int $requestDuration The request's duration in milliseconds.
21
+ */
22
+ public function __construct($requestId, $requestDuration)
23
+ {
24
+ $this->requestId = $requestId;
25
+ $this->requestDuration = $requestDuration;
26
+ }
27
+ }
app/api/Stripe/Review.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Review
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $billing_zip
11
+ * @property string $charge
12
+ * @property string $closed_reason
13
+ * @property int $created
14
+ * @property string $ip_address
15
+ * @property mixed $ip_address_location
16
+ * @property bool $livemode
17
+ * @property bool $open
18
+ * @property string $opened_reason
19
+ * @property string $payment_intent
20
+ * @property string $reason
21
+ * @property mixed $session
22
+ *
23
+ * @package Stripe
24
+ */
25
+ class Review extends ApiResource
26
+ {
27
+ const OBJECT_NAME = "review";
28
+
29
+ use ApiOperations\All;
30
+ use ApiOperations\Retrieve;
31
+
32
+ /**
33
+ * Possible string representations of the current, the opening or the closure reason of the review.
34
+ * Not all of these enumeration apply to all of the ´reason´ fields. Please consult the Review object to
35
+ * determine where these are apply.
36
+ * @link https://stripe.com/docs/api/radar/reviews/object
37
+ */
38
+ const REASON_APPROVED = 'approved';
39
+ const REASON_DISPUTED = 'disputed';
40
+ const REASON_MANUAL = 'manual';
41
+ const REASON_REFUNDED = 'refunded';
42
+ const REASON_REFUNDED_AS_FRAUD = 'refunded_as_fraud';
43
+ const REASON_RULE = 'rule';
44
+
45
+ /**
46
+ * @param array|string|null $options
47
+ *
48
+ * @return Review The approved review.
49
+ */
50
+ public function approve($params = null, $options = null)
51
+ {
52
+ $url = $this->instanceUrl() . '/approve';
53
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
54
+ $this->refreshFrom($response, $opts);
55
+ return $this;
56
+ }
57
+ }
app/api/Stripe/SKU.php CHANGED
@@ -5,73 +5,30 @@ namespace Stripe;
5
  /**
6
  * Class SKU
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class SKU extends ApiResource
11
  {
12
- /**
13
- * @param string $id The ID of the SKU to retrieve.
14
- * @param array|string|null $opts
15
- *
16
- * @return SKU
17
- */
18
- public static function retrieve($id, $opts = null)
19
- {
20
- return self::_retrieve($id, $opts);
21
- }
22
-
23
- /**
24
- * @param array|null $params
25
- * @param array|string|null $opts
26
- *
27
- * @return SKU The created SKU.
28
- */
29
- public static function create($params = null, $opts = null)
30
- {
31
- return self::_create($params, $opts);
32
- }
33
-
34
- /**
35
- * @param string $id The ID of the SKU to update.
36
- * @param array|null $params
37
- * @param array|string|null $options
38
- *
39
- * @return SKU The updated SKU.
40
- */
41
- public static function update($id, $params = null, $options = null)
42
- {
43
- return self::_update($id, $params, $options);
44
- }
45
-
46
- /**
47
- * @param array|string|null $opts
48
- *
49
- * @return SKU The saved SKU.
50
- */
51
- public function save($opts = null)
52
- {
53
- return $this->_save($opts);
54
- }
55
-
56
- /**
57
- * @param array|null $params
58
- * @param array|string|null $opts
59
- *
60
- * @return Collection of SKUs
61
- */
62
- public static function all($params = null, $opts = null)
63
- {
64
- return self::_all($params, $opts);
65
- }
66
 
67
- /**
68
- * @param array|null $params
69
- * @param array|string|null $opts
70
- *
71
- * @return SKU The deleted sku.
72
- */
73
- public function delete($params = null, $opts = null)
74
- {
75
- return $this->_delete($params, $opts);
76
- }
77
  }
5
  /**
6
  * Class SKU
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property bool $active
11
+ * @property mixed $attributes
12
+ * @property int $created
13
+ * @property string $currency
14
+ * @property string $image
15
+ * @property mixed $inventory
16
+ * @property bool $livemode
17
+ * @property StripeObject $metadata
18
+ * @property mixed $package_dimensions
19
+ * @property int $price
20
+ * @property string $product
21
+ * @property int $updated
22
+ *
23
  * @package Stripe
24
  */
25
  class SKU extends ApiResource
26
  {
27
+ const OBJECT_NAME = "sku";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
+ use ApiOperations\All;
30
+ use ApiOperations\Create;
31
+ use ApiOperations\Delete;
32
+ use ApiOperations\Retrieve;
33
+ use ApiOperations\Update;
 
 
 
 
 
34
  }
app/api/Stripe/SetupIntent.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class SetupIntent
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $application
11
+ * @property string $client_secret
12
+ * @property int $created
13
+ * @property string $customer
14
+ * @property string $description
15
+ * @property mixed $last_setup_error
16
+ * @property bool $livemode
17
+ * @property StripeObject $metadata
18
+ * @property mixed $next_action
19
+ * @property string $on_behalf_of
20
+ * @property string $payment_method
21
+ * @property string[] $payment_method_types
22
+ * @property string $status
23
+ *
24
+ * @package Stripe
25
+ */
26
+ class SetupIntent extends ApiResource
27
+ {
28
+ const OBJECT_NAME = "setup_intent";
29
+
30
+ use ApiOperations\All;
31
+ use ApiOperations\Create;
32
+ use ApiOperations\Retrieve;
33
+ use ApiOperations\Update;
34
+
35
+ /**
36
+ * These constants are possible representations of the status field.
37
+ *
38
+ * @link https://stripe.com/docs/api/setup_intents/object#setup_intent_object-status
39
+ */
40
+ const STATUS_CANCELED = 'canceled';
41
+ const STATUS_PROCESSING = 'processing';
42
+ const STATUS_REQUIRES_ACTION = 'requires_action';
43
+ const STATUS_REQUIRES_CONFIRMATION = 'requires_confirmation';
44
+ const STATUS_REQUIRES_PAYMENT_METHOD = 'requires_payment_method';
45
+ const STATUS_SUCCEEDED = 'succeeded';
46
+
47
+ /**
48
+ * @param array|null $params
49
+ * @param array|string|null $options
50
+ *
51
+ * @return SetupIntent The canceled setup intent.
52
+ */
53
+ public function cancel($params = null, $options = null)
54
+ {
55
+ $url = $this->instanceUrl() . '/cancel';
56
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
57
+ $this->refreshFrom($response, $opts);
58
+ return $this;
59
+ }
60
+
61
+ /**
62
+ * @param array|null $params
63
+ * @param array|string|null $options
64
+ *
65
+ * @return SetupIntent The confirmed setup intent.
66
+ */
67
+ public function confirm($params = null, $options = null)
68
+ {
69
+ $url = $this->instanceUrl() . '/confirm';
70
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
71
+ $this->refreshFrom($response, $opts);
72
+ return $this;
73
+ }
74
+ }
app/api/Stripe/Sigma/ScheduledQueryRun.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Sigma;
4
+
5
+ /**
6
+ * Class Authorization
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $created
11
+ * @property int $data_load_time
12
+ * @property string $error
13
+ * @property \Stripe\FileUpload $file
14
+ * @property bool $livemode
15
+ * @property int $result_available_until
16
+ * @property string $sql
17
+ * @property string $status
18
+ * @property string $title
19
+ *
20
+ * @package Stripe\Sigma
21
+ */
22
+ class ScheduledQueryRun extends \Stripe\ApiResource
23
+ {
24
+ const OBJECT_NAME = "scheduled_query_run";
25
+
26
+ use \Stripe\ApiOperations\All;
27
+ use \Stripe\ApiOperations\Retrieve;
28
+
29
+ public static function classUrl()
30
+ {
31
+ return "/v1/sigma/scheduled_query_runs";
32
+ }
33
+ }
app/api/Stripe/SingletonApiResource.php CHANGED
@@ -22,7 +22,9 @@ abstract class SingletonApiResource extends ApiResource
22
  */
23
  public static function classUrl()
24
  {
25
- $base = static::className();
 
 
26
  return "/v1/${base}";
27
  }
28
 
22
  */
23
  public static function classUrl()
24
  {
25
+ // Replace dots with slashes for namespaced resources, e.g. if the object's name is
26
+ // "foo.bar", then its URL will be "/v1/foo/bar".
27
+ $base = str_replace('.', '/', static::OBJECT_NAME);
28
  return "/v1/${base}";
29
  }
30
 
app/api/Stripe/Source.php CHANGED
@@ -5,48 +5,143 @@ namespace Stripe;
5
  /**
6
  * Class Source
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class Source extends ApiResource
11
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  /**
13
- * @param string $id The ID of the Source to retrieve.
14
- * @param array|string|null $opts
15
  *
16
- * @return Source
17
  */
18
- public static function retrieve($id, $opts = null)
19
  {
20
- return self::_retrieve($id, $opts);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  }
22
 
23
  /**
24
  * @param array|null $params
25
- * @param array|string|null $opts
26
  *
27
- * @return Collection of Sources
 
 
28
  */
29
- public static function all($params = null, $opts = null)
30
  {
31
- return self::_all($params, $opts);
32
  }
33
 
34
  /**
35
  * @param array|null $params
36
- * @param array|string|null $opts
37
  *
38
- * @return Source The created Source.
39
  */
40
- public static function create($params = null, $opts = null)
41
  {
42
- return self::_create($params, $opts);
 
 
 
 
43
  }
44
 
45
  /**
46
  * @param array|null $params
47
  * @param array|string|null $options
48
  *
49
- * @return BankAccount The verified bank account.
50
  */
51
  public function verify($params = null, $options = null)
52
  {
5
  /**
6
  * Class Source
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property mixed $ach_credit_transfer
11
+ * @property mixed $ach_debit
12
+ * @property mixed $alipay
13
+ * @property int $amount
14
+ * @property mixed $bancontact
15
+ * @property mixed $card
16
+ * @property mixed $card_present
17
+ * @property string $client_secret
18
+ * @property mixed $code_verification
19
+ * @property int $created
20
+ * @property string $currency
21
+ * @property string $customer
22
+ * @property mixed $eps
23
+ * @property string $flow
24
+ * @property mixed $giropay
25
+ * @property mixed $ideal
26
+ * @property bool $livemode
27
+ * @property StripeObject $metadata
28
+ * @property mixed $multibanco
29
+ * @property mixed $owner
30
+ * @property mixed $p24
31
+ * @property mixed $receiver
32
+ * @property mixed $redirect
33
+ * @property mixed $sepa_debit
34
+ * @property mixed $sofort
35
+ * @property string $statement_descriptor
36
+ * @property string $status
37
+ * @property mixed $three_d_secure
38
+ * @property string $type
39
+ * @property string $usage
40
+ * @property mixed $wechat
41
+
42
  * @package Stripe
43
  */
44
  class Source extends ApiResource
45
  {
46
+ const OBJECT_NAME = "source";
47
+
48
+ use ApiOperations\Create;
49
+ use ApiOperations\Retrieve;
50
+ use ApiOperations\Update;
51
+
52
+ /**
53
+ * Possible string representations of source flows.
54
+ * @link https://stripe.com/docs/api#source_object-flow
55
+ */
56
+ const FLOW_REDIRECT = 'redirect';
57
+ const FLOW_RECEIVER = 'receiver';
58
+ const FLOW_CODE_VERIFICATION = 'code_verification';
59
+ const FLOW_NONE = 'none';
60
+
61
+ /**
62
+ * Possible string representations of source statuses.
63
+ * @link https://stripe.com/docs/api#source_object-status
64
+ */
65
+ const STATUS_CANCELED = 'canceled';
66
+ const STATUS_CHARGEABLE = 'chargeable';
67
+ const STATUS_CONSUMED = 'consumed';
68
+ const STATUS_FAILED = 'failed';
69
+ const STATUS_PENDING = 'pending';
70
+
71
+ /**
72
+ * Possible string representations of source usage.
73
+ * @link https://stripe.com/docs/api#source_object-usage
74
+ */
75
+ const USAGE_REUSABLE = 'reusable';
76
+ const USAGE_SINGLE_USE = 'single_use';
77
+
78
  /**
79
+ * @param array|null $params
80
+ * @param array|string|null $options
81
  *
82
+ * @return Source The detached source.
83
  */
84
+ public function detach($params = null, $options = null)
85
  {
86
+ self::_validateParams($params);
87
+
88
+ $id = $this['id'];
89
+ if (!$id) {
90
+ $class = get_class($this);
91
+ $msg = "Could not determine which URL to request: $class instance "
92
+ . "has invalid ID: $id";
93
+ throw new Error\InvalidRequest($msg, null);
94
+ }
95
+
96
+ if ($this['customer']) {
97
+ $base = Customer::classUrl();
98
+ $parentExtn = urlencode(Util\Util::utf8($this['customer']));
99
+ $extn = urlencode(Util\Util::utf8($id));
100
+ $url = "$base/$parentExtn/sources/$extn";
101
+
102
+ list($response, $opts) = $this->_request('delete', $url, $params, $options);
103
+ $this->refreshFrom($response, $opts);
104
+ return $this;
105
+ } else {
106
+ $message = "This source object does not appear to be currently attached "
107
+ . "to a customer object.";
108
+ throw new Error\Api($message);
109
+ }
110
  }
111
 
112
  /**
113
  * @param array|null $params
114
+ * @param array|string|null $options
115
  *
116
+ * @return Source The detached source.
117
+ *
118
+ * @deprecated Use the `detach` method instead.
119
  */
120
+ public function delete($params = null, $options = null)
121
  {
122
+ $this->detach($params, $options);
123
  }
124
 
125
  /**
126
  * @param array|null $params
127
+ * @param array|string|null $options
128
  *
129
+ * @return Collection The list of source transactions.
130
  */
131
+ public function sourceTransactions($params = null, $options = null)
132
  {
133
+ $url = $this->instanceUrl() . '/source_transactions';
134
+ list($response, $opts) = $this->_request('get', $url, $params, $options);
135
+ $obj = Util\Util::convertToStripeObject($response, $opts);
136
+ $obj->setLastResponse($response);
137
+ return $obj;
138
  }
139
 
140
  /**
141
  * @param array|null $params
142
  * @param array|string|null $options
143
  *
144
+ * @return Source The verified source.
145
  */
146
  public function verify($params = null, $options = null)
147
  {
app/api/Stripe/SourceTransaction.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class SourceTransaction
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $created
12
+ * @property string $customer_data
13
+ * @property string $currency
14
+ * @property string $type
15
+ * @property mixed $ach_credit_transfer
16
+ *
17
+ * @package Stripe
18
+ */
19
+ class SourceTransaction extends ApiResource
20
+ {
21
+ const OBJECT_NAME = "source_transaction";
22
+ }
app/api/Stripe/Stripe.php CHANGED
@@ -12,11 +12,17 @@ class Stripe
12
  // @var string The Stripe API key to be used for requests.
13
  public static $apiKey;
14
 
 
 
 
15
  // @var string The base URL for the Stripe API.
16
  public static $apiBase = 'https://api.stripe.com';
17
 
 
 
 
18
  // @var string The base URL for the Stripe API uploads endpoint.
19
- public static $apiUploadBase = 'https://uploads.stripe.com';
20
 
21
  // @var string|null The version of the Stripe API to use for requests.
22
  public static $apiVersion = null;
@@ -24,13 +30,32 @@ class Stripe
24
  // @var string|null The account ID for connected accounts requests.
25
  public static $accountId = null;
26
 
 
 
 
27
  // @var boolean Defaults to true.
28
  public static $verifySslCerts = true;
29
 
30
  // @var array The application's information (name, version, URL)
31
  public static $appInfo = null;
32
 
33
- const VERSION = '4.3.0';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  /**
36
  * @return string The API key used for requests.
@@ -40,6 +65,35 @@ class Stripe
40
  return self::$apiKey;
41
  }
42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  /**
44
  * Sets the API key to be used for requests.
45
  *
@@ -50,6 +104,16 @@ class Stripe
50
  self::$apiKey = $apiKey;
51
  }
52
 
 
 
 
 
 
 
 
 
 
 
53
  /**
54
  * @return string The API version used for requests. null if we're using the
55
  * latest version.
@@ -67,6 +131,30 @@ class Stripe
67
  self::$apiVersion = $apiVersion;
68
  }
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  /**
71
  * @return boolean
72
  */
@@ -114,13 +202,64 @@ class Stripe
114
  * @param string $appVersion The application's version
115
  * @param string $appUrl The application's URL
116
  */
117
- public static function setAppInfo($appName, $appVersion = null, $appUrl = null)
118
  {
119
- if (self::$appInfo === null) {
120
- self::$appInfo = array();
121
- }
122
  self::$appInfo['name'] = $appName;
123
- self::$appInfo['version'] = $appVersion;
124
  self::$appInfo['url'] = $appUrl;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  }
126
  }
12
  // @var string The Stripe API key to be used for requests.
13
  public static $apiKey;
14
 
15
+ // @var string The Stripe client_id to be used for Connect requests.
16
+ public static $clientId;
17
+
18
  // @var string The base URL for the Stripe API.
19
  public static $apiBase = 'https://api.stripe.com';
20
 
21
+ // @var string The base URL for the OAuth API.
22
+ public static $connectBase = 'https://connect.stripe.com';
23
+
24
  // @var string The base URL for the Stripe API uploads endpoint.
25
+ public static $apiUploadBase = 'https://files.stripe.com';
26
 
27
  // @var string|null The version of the Stripe API to use for requests.
28
  public static $apiVersion = null;
30
  // @var string|null The account ID for connected accounts requests.
31
  public static $accountId = null;
32
 
33
+ // @var string Path to the CA bundle used to verify SSL certificates
34
+ public static $caBundlePath = null;
35
+
36
  // @var boolean Defaults to true.
37
  public static $verifySslCerts = true;
38
 
39
  // @var array The application's information (name, version, URL)
40
  public static $appInfo = null;
41
 
42
+ // @var Util\LoggerInterface|null The logger to which the library will
43
+ // produce messages.
44
+ public static $logger = null;
45
+
46
+ // @var int Maximum number of request retries
47
+ public static $maxNetworkRetries = 0;
48
+
49
+ // @var boolean Whether client telemetry is enabled. Defaults to false.
50
+ public static $enableTelemetry = true;
51
+
52
+ // @var float Maximum delay between retries, in seconds
53
+ private static $maxNetworkRetryDelay = 2.0;
54
+
55
+ // @var float Initial delay between retries, in seconds
56
+ private static $initialNetworkRetryDelay = 0.5;
57
+
58
+ const VERSION = '6.43.0';
59
 
60
  /**
61
  * @return string The API key used for requests.
65
  return self::$apiKey;
66
  }
67
 
68
+ /**
69
+ * @return string The client_id used for Connect requests.
70
+ */
71
+ public static function getClientId()
72
+ {
73
+ return self::$clientId;
74
+ }
75
+
76
+ /**
77
+ * @return Util\LoggerInterface The logger to which the library will
78
+ * produce messages.
79
+ */
80
+ public static function getLogger()
81
+ {
82
+ if (self::$logger == null) {
83
+ return new Util\DefaultLogger();
84
+ }
85
+ return self::$logger;
86
+ }
87
+
88
+ /**
89
+ * @param Util\LoggerInterface $logger The logger to which the library
90
+ * will produce messages.
91
+ */
92
+ public static function setLogger($logger)
93
+ {
94
+ self::$logger = $logger;
95
+ }
96
+
97
  /**
98
  * Sets the API key to be used for requests.
99
  *
104
  self::$apiKey = $apiKey;
105
  }
106
 
107
+ /**
108
+ * Sets the client_id to be used for Connect requests.
109
+ *
110
+ * @param string $clientId
111
+ */
112
+ public static function setClientId($clientId)
113
+ {
114
+ self::$clientId = $clientId;
115
+ }
116
+
117
  /**
118
  * @return string The API version used for requests. null if we're using the
119
  * latest version.
131
  self::$apiVersion = $apiVersion;
132
  }
133
 
134
+ /**
135
+ * @return string
136
+ */
137
+ private static function getDefaultCABundlePath()
138
+ {
139
+ return realpath(dirname(__FILE__) . '/HttpClient/data/ca-certificates.crt');
140
+ }
141
+
142
+ /**
143
+ * @return string
144
+ */
145
+ public static function getCABundlePath()
146
+ {
147
+ return self::$caBundlePath ?: self::getDefaultCABundlePath();
148
+ }
149
+
150
+ /**
151
+ * @param string $caBundlePath
152
+ */
153
+ public static function setCABundlePath($caBundlePath)
154
+ {
155
+ self::$caBundlePath = $caBundlePath;
156
+ }
157
+
158
  /**
159
  * @return boolean
160
  */
202
  * @param string $appVersion The application's version
203
  * @param string $appUrl The application's URL
204
  */
205
+ public static function setAppInfo($appName, $appVersion = null, $appUrl = null, $appPartnerId = null)
206
  {
207
+ self::$appInfo = self::$appInfo ?: [];
 
 
208
  self::$appInfo['name'] = $appName;
209
+ self::$appInfo['partner_id'] = $appPartnerId;
210
  self::$appInfo['url'] = $appUrl;
211
+ self::$appInfo['version'] = $appVersion;
212
+ }
213
+
214
+ /**
215
+ * @return int Maximum number of request retries
216
+ */
217
+ public static function getMaxNetworkRetries()
218
+ {
219
+ return self::$maxNetworkRetries;
220
+ }
221
+
222
+ /**
223
+ * @param int $maxNetworkRetries Maximum number of request retries
224
+ */
225
+ public static function setMaxNetworkRetries($maxNetworkRetries)
226
+ {
227
+ self::$maxNetworkRetries = $maxNetworkRetries;
228
+ }
229
+
230
+ /**
231
+ * @return float Maximum delay between retries, in seconds
232
+ */
233
+ public static function getMaxNetworkRetryDelay()
234
+ {
235
+ return self::$maxNetworkRetryDelay;
236
+ }
237
+
238
+ /**
239
+ * @return float Initial delay between retries, in seconds
240
+ */
241
+ public static function getInitialNetworkRetryDelay()
242
+ {
243
+ return self::$initialNetworkRetryDelay;
244
+ }
245
+
246
+ /**
247
+ * @return bool Whether client telemetry is enabled
248
+ */
249
+ public static function getEnableTelemetry()
250
+ {
251
+ return self::$enableTelemetry;
252
+ }
253
+
254
+ /**
255
+ * @param bool $enableTelemetry Enables client telemetry.
256
+ *
257
+ * Client telemetry enables timing and request metrics to be sent back to Stripe as an HTTP Header
258
+ * with the current request. This enables Stripe to do latency and metrics analysis without adding extra
259
+ * overhead (such as extra network calls) on the client.
260
+ */
261
+ public static function setEnableTelemetry($enableTelemetry)
262
+ {
263
+ self::$enableTelemetry = $enableTelemetry;
264
  }
265
  }
app/api/Stripe/StripeObject.php CHANGED
@@ -2,126 +2,158 @@
2
 
3
  namespace Stripe;
4
 
5
- use ArrayAccess;
6
- use InvalidArgumentException;
7
-
8
  /**
9
  * Class StripeObject
10
  *
11
  * @package Stripe
12
  */
13
- class StripeObject implements ArrayAccess, JsonSerializable
14
  {
15
- /**
16
- * @var Util\Set Attributes that should not be sent to the API because
17
- * they're not updatable (e.g. API key, ID).
18
- */
19
- public static $permanentAttributes;
20
- /**
21
- * @var Util\Set Attributes that are nested but still updatable from
22
- * the parent class's URL (e.g. metadata).
23
- */
24
- public static $nestedUpdatableAttributes;
25
-
26
- public static function init()
27
- {
28
- self::$permanentAttributes = new Util\Set(array('_opts', 'id'));
29
- self::$nestedUpdatableAttributes = new Util\Set(array(
30
- 'metadata', 'legal_entity', 'address', 'dob', 'transfer_schedule', 'verification',
31
- 'tos_acceptance', 'personal_address',
32
- // will make the array into an AttachedObject: weird, but works for now
33
- 'additional_owners', 0, 1, 2, 3, 4, // Max 3, but leave the 4th so errors work properly
34
- 'inventory'
35
- ));
36
- }
37
 
38
  /**
39
- * @return object The last response from the Stripe API
 
40
  */
41
- public function getLastResponse()
42
  {
43
- return $this->_lastResponse;
 
 
 
 
 
 
44
  }
45
 
46
  /**
47
- * @param ApiResponse
 
 
 
 
 
 
 
 
 
48
  *
49
- * @return void Set the last response from the Stripe API
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  */
51
- public function setLastResponse($resp)
52
  {
53
- $this->_lastResponse = $resp;
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
 
56
- protected $_opts;
57
- protected $_values;
58
- protected $_unsavedValues;
59
- protected $_transientValues;
60
- protected $_retrieveOptions;
61
- protected $_lastResponse;
62
-
63
  public function __construct($id = null, $opts = null)
64
  {
65
- $this->_opts = $opts ? $opts : new Util\RequestOptions();
66
- $this->_values = array();
 
 
67
  $this->_unsavedValues = new Util\Set();
68
  $this->_transientValues = new Util\Set();
69
-
70
- $this->_retrieveOptions = array();
71
- if (is_array($id)) {
72
- foreach ($id as $key => $value) {
73
- if ($key != 'id') {
74
- $this->_retrieveOptions[$key] = $value;
75
- }
76
- }
77
- $id = $id['id'];
78
- }
79
-
80
  if ($id !== null) {
81
- $this->id = $id;
82
  }
83
  }
84
 
85
  // Standard accessor magic methods
86
  public function __set($k, $v)
87
  {
 
 
 
 
 
 
 
88
  if ($v === "") {
89
- throw new InvalidArgumentException(
90
  'You cannot set \''.$k.'\'to an empty string. '
91
  .'We interpret empty strings as NULL in requests. '
92
  .'You may set obj->'.$k.' = NULL to delete the property'
93
  );
94
  }
95
 
96
- if (self::$nestedUpdatableAttributes->includes($k)
97
- && isset($this->$k) && $this->$k instanceof AttachedObject && is_array($v)) {
98
- $this->$k->replaceWith($v);
99
- } else {
100
- // TODO: may want to clear from $_transientValues (Won't be user-visible).
101
- $this->_values[$k] = $v;
102
- }
103
- if (!self::$permanentAttributes->includes($k)) {
104
- $this->_unsavedValues->add($k);
105
- }
106
  }
107
 
108
  public function __isset($k)
109
  {
110
  return isset($this->_values[$k]);
111
  }
 
112
  public function __unset($k)
113
  {
114
  unset($this->_values[$k]);
115
  $this->_transientValues->add($k);
116
  $this->_unsavedValues->discard($k);
117
  }
 
118
  public function &__get($k)
119
  {
120
  // function should return a reference, using $nullval to return a reference to null
121
  $nullval = null;
122
  if (!empty($this->_values) && array_key_exists($k, $this->_values)) {
123
  return $this->_values[$k];
124
- } else if (!empty($this->_transientValues) && $this->_transientValues->includes($k)) {
125
  $class = get_class($this);
126
  $attrs = join(', ', array_keys($this->_values));
127
  $message = "Stripe Notice: Undefined property of $class instance: $k. "
@@ -130,15 +162,21 @@ class StripeObject implements ArrayAccess, JsonSerializable
130
  . "with the result returned by Stripe's API, "
131
  . "probably as a result of a save(). The attributes currently "
132
  . "available on this object are: $attrs";
133
- error_log($message);
134
  return $nullval;
135
  } else {
136
  $class = get_class($this);
137
- error_log("Stripe Notice: Undefined property of $class instance: $k");
138
  return $nullval;
139
  }
140
  }
141
 
 
 
 
 
 
 
142
  // ArrayAccess methods
143
  public function offsetSet($k, $v)
144
  {
@@ -154,25 +192,37 @@ class StripeObject implements ArrayAccess, JsonSerializable
154
  {
155
  unset($this->$k);
156
  }
 
157
  public function offsetGet($k)
158
  {
159
  return array_key_exists($k, $this->_values) ? $this->_values[$k] : null;
160
  }
161
 
 
 
 
 
 
 
162
  public function keys()
163
  {
164
  return array_keys($this->_values);
165
  }
166
 
 
 
 
 
 
167
  /**
168
  * This unfortunately needs to be public to be used in Util\Util
169
  *
170
  * @param array $values
171
- * @param array $opts
172
  *
173
- * @return StripeObject The object constructed from the given values.
174
  */
175
- public static function constructFrom($values, $opts)
176
  {
177
  $obj = new static(isset($values['id']) ? $values['id'] : null);
178
  $obj->refreshFrom($values, $opts);
@@ -183,16 +233,18 @@ class StripeObject implements ArrayAccess, JsonSerializable
183
  * Refreshes this object using the provided values.
184
  *
185
  * @param array $values
186
- * @param array|Util\RequestOptions $opts
187
  * @param boolean $partial Defaults to false.
188
  */
189
  public function refreshFrom($values, $opts, $partial = false)
190
  {
191
- if (is_array($opts)) {
192
- $opts = Util\RequestOptions::parse($opts);
193
- }
194
 
195
- $this->_opts = $opts;
 
 
 
 
196
 
197
  // Wipe old state before setting new. This is useful for e.g. updating a
198
  // customer, where there is no persistent card parameter. Mark those values
@@ -200,30 +252,43 @@ class StripeObject implements ArrayAccess, JsonSerializable
200
  if ($partial) {
201
  $removed = new Util\Set();
202
  } else {
203
- $removed = array_diff(array_keys($this->_values), array_keys($values));
204
  }
205
 
206
- foreach ($removed as $k) {
207
- if (self::$permanentAttributes->includes($k)) {
208
- continue;
209
- }
210
-
211
  unset($this->$k);
212
  }
213
 
 
214
  foreach ($values as $k => $v) {
215
- if (self::$permanentAttributes->includes($k) && isset($this[$k])) {
216
- continue;
217
- }
 
218
 
219
- if (self::$nestedUpdatableAttributes->includes($k) && is_array($v)) {
220
- $this->_values[$k] = AttachedObject::constructFrom($v, $opts);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  } else {
222
  $this->_values[$k] = Util\Util::convertToStripeObject($v, $opts);
223
  }
224
-
225
- $this->_transientValues->discard($k);
226
- $this->_unsavedValues->discard($k);
 
227
  }
228
  }
229
 
@@ -231,33 +296,107 @@ class StripeObject implements ArrayAccess, JsonSerializable
231
  * @return array A recursive mapping of attributes to values for this object,
232
  * including the proper value for deleted attributes.
233
  */
234
- public function serializeParameters()
235
  {
236
- $params = array();
237
- if ($this->_unsavedValues) {
238
- foreach ($this->_unsavedValues->toArray() as $k) {
239
- $v = $this->$k;
240
- if ($v === null) {
241
- $v = '';
242
- }
243
-
244
- $params[$k] = $v;
 
 
 
 
 
 
 
 
 
 
 
 
245
  }
246
  }
247
 
248
- // Get nested updates.
249
- foreach (self::$nestedUpdatableAttributes->toArray() as $property) {
250
- if (isset($this->$property)) {
251
- if ($this->$property instanceof StripeObject) {
252
- $serialized = $this->$property->serializeParameters();
253
- if ($serialized) {
254
- $params[$property] = $serialized;
255
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
  }
 
 
 
 
 
 
 
 
257
  }
 
 
 
258
  }
259
-
260
- return $params;
261
  }
262
 
263
  public function jsonSerialize()
@@ -267,11 +406,7 @@ class StripeObject implements ArrayAccess, JsonSerializable
267
 
268
  public function __toJSON()
269
  {
270
- if (defined('JSON_PRETTY_PRINT')) {
271
- return json_encode($this->__toArray(true), JSON_PRETTY_PRINT);
272
- } else {
273
- return json_encode($this->__toArray(true));
274
- }
275
  }
276
 
277
  public function __toString()
@@ -288,6 +423,101 @@ class StripeObject implements ArrayAccess, JsonSerializable
288
  return $this->_values;
289
  }
290
  }
291
- }
292
 
293
- StripeObject::init();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  namespace Stripe;
4
 
 
 
 
5
  /**
6
  * Class StripeObject
7
  *
8
  * @package Stripe
9
  */
10
+ class StripeObject implements \ArrayAccess, \Countable, \JsonSerializable
11
  {
12
+ protected $_opts;
13
+ protected $_originalValues;
14
+ protected $_values;
15
+ protected $_unsavedValues;
16
+ protected $_transientValues;
17
+ protected $_retrieveOptions;
18
+ protected $_lastResponse;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  /**
21
+ * @return Util\Set Attributes that should not be sent to the API because
22
+ * they're not updatable (e.g. ID).
23
  */
24
+ public static function getPermanentAttributes()
25
  {
26
+ static $permanentAttributes = null;
27
+ if ($permanentAttributes === null) {
28
+ $permanentAttributes = new Util\Set([
29
+ 'id',
30
+ ]);
31
+ }
32
+ return $permanentAttributes;
33
  }
34
 
35
  /**
36
+ * Additive objects are subobjects in the API that don't have the same
37
+ * semantics as most subobjects, which are fully replaced when they're set.
38
+ * This is best illustrated by example. The `source` parameter sent when
39
+ * updating a subscription is *not* additive; if we set it:
40
+ *
41
+ * source[object]=card&source[number]=123
42
+ *
43
+ * We expect the old `source` object to have been overwritten completely. If
44
+ * the previous source had an `address_state` key associated with it and we
45
+ * didn't send one this time, that value of `address_state` is gone.
46
  *
47
+ * By contrast, additive objects are those that will have new data added to
48
+ * them while keeping any existing data in place. The only known case of its
49
+ * use is for `metadata`, but it could in theory be more general. As an
50
+ * example, say we have a `metadata` object that looks like this on the
51
+ * server side:
52
+ *
53
+ * metadata = ["old" => "old_value"]
54
+ *
55
+ * If we update the object with `metadata[new]=new_value`, the server side
56
+ * object now has *both* fields:
57
+ *
58
+ * metadata = ["old" => "old_value", "new" => "new_value"]
59
+ *
60
+ * This is okay in itself because usually users will want to treat it as
61
+ * additive:
62
+ *
63
+ * $obj->metadata["new"] = "new_value";
64
+ * $obj->save();
65
+ *
66
+ * However, in other cases, they may want to replace the entire existing
67
+ * contents:
68
+ *
69
+ * $obj->metadata = ["new" => "new_value"];
70
+ * $obj->save();
71
+ *
72
+ * This is where things get a little bit tricky because in order to clear
73
+ * any old keys that may have existed, we actually have to send an explicit
74
+ * empty string to the server. So the operation above would have to send
75
+ * this form to get the intended behavior:
76
+ *
77
+ * metadata[old]=&metadata[new]=new_value
78
+ *
79
+ * This method allows us to track which parameters are considered additive,
80
+ * and lets us behave correctly where appropriate when serializing
81
+ * parameters to be sent.
82
+ *
83
+ * @return Util\Set Set of additive parameters
84
  */
85
+ public static function getAdditiveParams()
86
  {
87
+ static $additiveParams = null;
88
+ if ($additiveParams === null) {
89
+ // Set `metadata` as additive so that when it's set directly we remember
90
+ // to clear keys that may have been previously set by sending empty
91
+ // values for them.
92
+ //
93
+ // It's possible that not every object has `metadata`, but having this
94
+ // option set when there is no `metadata` field is not harmful.
95
+ $additiveParams = new Util\Set([
96
+ 'metadata',
97
+ ]);
98
+ }
99
+ return $additiveParams;
100
  }
101
 
 
 
 
 
 
 
 
102
  public function __construct($id = null, $opts = null)
103
  {
104
+ list($id, $this->_retrieveOptions) = Util\Util::normalizeId($id);
105
+ $this->_opts = Util\RequestOptions::parse($opts);
106
+ $this->_originalValues = [];
107
+ $this->_values = [];
108
  $this->_unsavedValues = new Util\Set();
109
  $this->_transientValues = new Util\Set();
 
 
 
 
 
 
 
 
 
 
 
110
  if ($id !== null) {
111
+ $this->_values['id'] = $id;
112
  }
113
  }
114
 
115
  // Standard accessor magic methods
116
  public function __set($k, $v)
117
  {
118
+ if (static::getPermanentAttributes()->includes($k)) {
119
+ throw new \InvalidArgumentException(
120
+ "Cannot set $k on this object. HINT: you can't set: " .
121
+ join(', ', static::getPermanentAttributes()->toArray())
122
+ );
123
+ }
124
+
125
  if ($v === "") {
126
+ throw new \InvalidArgumentException(
127
  'You cannot set \''.$k.'\'to an empty string. '
128
  .'We interpret empty strings as NULL in requests. '
129
  .'You may set obj->'.$k.' = NULL to delete the property'
130
  );
131
  }
132
 
133
+ $this->_values[$k] = Util\Util::convertToStripeObject($v, $this->_opts);
134
+ $this->dirtyValue($this->_values[$k]);
135
+ $this->_unsavedValues->add($k);
 
 
 
 
 
 
 
136
  }
137
 
138
  public function __isset($k)
139
  {
140
  return isset($this->_values[$k]);
141
  }
142
+
143
  public function __unset($k)
144
  {
145
  unset($this->_values[$k]);
146
  $this->_transientValues->add($k);
147
  $this->_unsavedValues->discard($k);
148
  }
149
+
150
  public function &__get($k)
151
  {
152
  // function should return a reference, using $nullval to return a reference to null
153
  $nullval = null;
154
  if (!empty($this->_values) && array_key_exists($k, $this->_values)) {
155
  return $this->_values[$k];
156
+ } elseif (!empty($this->_transientValues) && $this->_transientValues->includes($k)) {
157
  $class = get_class($this);
158
  $attrs = join(', ', array_keys($this->_values));
159
  $message = "Stripe Notice: Undefined property of $class instance: $k. "
162
  . "with the result returned by Stripe's API, "
163
  . "probably as a result of a save(). The attributes currently "
164
  . "available on this object are: $attrs";
165
+ Stripe::getLogger()->error($message);
166
  return $nullval;
167
  } else {
168
  $class = get_class($this);
169
+ Stripe::getLogger()->error("Stripe Notice: Undefined property of $class instance: $k");
170
  return $nullval;
171
  }
172
  }
173
 
174
+ // Magic method for var_dump output. Only works with PHP >= 5.6
175
+ public function __debugInfo()
176
+ {
177
+ return $this->_values;
178
+ }
179
+
180
  // ArrayAccess methods
181
  public function offsetSet($k, $v)
182
  {
192
  {
193
  unset($this->$k);
194
  }
195
+
196
  public function offsetGet($k)
197
  {
198
  return array_key_exists($k, $this->_values) ? $this->_values[$k] : null;
199
  }
200
 
201
+ // Countable method
202
+ public function count()
203
+ {
204
+ return count($this->_values);
205
+ }
206
+
207
  public function keys()
208
  {
209
  return array_keys($this->_values);
210
  }
211
 
212
+ public function values()
213
+ {
214
+ return array_values($this->_values);
215
+ }
216
+
217
  /**
218
  * This unfortunately needs to be public to be used in Util\Util
219
  *
220
  * @param array $values
221
+ * @param null|string|array|Util\RequestOptions $opts
222
  *
223
+ * @return static The object constructed from the given values.
224
  */
225
+ public static function constructFrom($values, $opts = null)
226
  {
227
  $obj = new static(isset($values['id']) ? $values['id'] : null);
228
  $obj->refreshFrom($values, $opts);
233
  * Refreshes this object using the provided values.
234
  *
235
  * @param array $values
236
+ * @param null|string|array|Util\RequestOptions $opts
237
  * @param boolean $partial Defaults to false.
238
  */
239
  public function refreshFrom($values, $opts, $partial = false)
240
  {
241
+ $this->_opts = Util\RequestOptions::parse($opts);
 
 
242
 
243
+ $this->_originalValues = self::deepCopy($values);
244
+
245
+ if ($values instanceof StripeObject) {
246
+ $values = $values->__toArray(true);
247
+ }
248
 
249
  // Wipe old state before setting new. This is useful for e.g. updating a
250
  // customer, where there is no persistent card parameter. Mark those values
252
  if ($partial) {
253
  $removed = new Util\Set();
254
  } else {
255
+ $removed = new Util\Set(array_diff(array_keys($this->_values), array_keys($values)));
256
  }
257
 
258
+ foreach ($removed->toArray() as $k) {
 
 
 
 
259
  unset($this->$k);
260
  }
261
 
262
+ $this->updateAttributes($values, $opts, false);
263
  foreach ($values as $k => $v) {
264
+ $this->_transientValues->discard($k);
265
+ $this->_unsavedValues->discard($k);
266
+ }
267
+ }
268
 
269
+ /**
270
+ * Mass assigns attributes on the model.
271
+ *
272
+ * @param array $values
273
+ * @param null|string|array|Util\RequestOptions $opts
274
+ * @param boolean $dirty Defaults to true.
275
+ */
276
+ public function updateAttributes($values, $opts = null, $dirty = true)
277
+ {
278
+ foreach ($values as $k => $v) {
279
+ // Special-case metadata to always be cast as a StripeObject
280
+ // This is necessary in case metadata is empty, as PHP arrays do
281
+ // not differentiate between lists and hashes, and we consider
282
+ // empty arrays to be lists.
283
+ if (($k === "metadata") && (is_array($v))) {
284
+ $this->_values[$k] = StripeObject::constructFrom($v, $opts);
285
  } else {
286
  $this->_values[$k] = Util\Util::convertToStripeObject($v, $opts);
287
  }
288
+ if ($dirty) {
289
+ $this->dirtyValue($this->_values[$k]);
290
+ }
291
+ $this->_unsavedValues->add($k);
292
  }
293
  }
294
 
296
  * @return array A recursive mapping of attributes to values for this object,
297
  * including the proper value for deleted attributes.
298
  */
299
+ public function serializeParameters($force = false)
300
  {
301
+ $updateParams = [];
302
+
303
+ foreach ($this->_values as $k => $v) {
304
+ // There are a few reasons that we may want to add in a parameter for
305
+ // update:
306
+ //
307
+ // 1. The `$force` option has been set.
308
+ // 2. We know that it was modified.
309
+ // 3. Its value is a StripeObject. A StripeObject may contain modified
310
+ // values within in that its parent StripeObject doesn't know about.
311
+ //
312
+ $original = array_key_exists($k, $this->_originalValues) ? $this->_originalValues[$k] : null;
313
+ $unsaved = $this->_unsavedValues->includes($k);
314
+ if ($force || $unsaved || $v instanceof StripeObject) {
315
+ $updateParams[$k] = $this->serializeParamsValue(
316
+ $this->_values[$k],
317
+ $original,
318
+ $unsaved,
319
+ $force,
320
+ $k
321
+ );
322
  }
323
  }
324
 
325
+ // a `null` that makes it out of `serializeParamsValue` signals an empty
326
+ // value that we shouldn't appear in the serialized form of the object
327
+ $updateParams = array_filter(
328
+ $updateParams,
329
+ function ($v) {
330
+ return $v !== null;
331
+ }
332
+ );
333
+
334
+ return $updateParams;
335
+ }
336
+
337
+
338
+ public function serializeParamsValue($value, $original, $unsaved, $force, $key = null)
339
+ {
340
+ // The logic here is that essentially any object embedded in another
341
+ // object that had a `type` is actually an API resource of a different
342
+ // type that's been included in the response. These other resources must
343
+ // be updated from their proper endpoints, and therefore they are not
344
+ // included when serializing even if they've been modified.
345
+ //
346
+ // There are _some_ known exceptions though.
347
+ //
348
+ // For example, if the value is unsaved (meaning the user has set it), and
349
+ // it looks like the API resource is persisted with an ID, then we include
350
+ // the object so that parameters are serialized with a reference to its
351
+ // ID.
352
+ //
353
+ // Another example is that on save API calls it's sometimes desirable to
354
+ // update a customer's default source by setting a new card (or other)
355
+ // object with `->source=` and then saving the customer. The
356
+ // `saveWithParent` flag to override the default behavior allows us to
357
+ // handle these exceptions.
358
+ //
359
+ // We throw an error if a property was set explicitly but we can't do
360
+ // anything with it because the integration is probably not working as the
361
+ // user intended it to.
362
+ if ($value === null) {
363
+ return "";
364
+ } elseif (($value instanceof APIResource) && (!$value->saveWithParent)) {
365
+ if (!$unsaved) {
366
+ return null;
367
+ } elseif (isset($value->id)) {
368
+ return $value;
369
+ } else {
370
+ throw new \InvalidArgumentException(
371
+ "Cannot save property `$key` containing an API resource of type " .
372
+ get_class($value) . ". It doesn't appear to be persisted and is " .
373
+ "not marked as `saveWithParent`."
374
+ );
375
+ }
376
+ } elseif (is_array($value)) {
377
+ if (Util\Util::isList($value)) {
378
+ // Sequential array, i.e. a list
379
+ $update = [];
380
+ foreach ($value as $v) {
381
+ array_push($update, $this->serializeParamsValue($v, null, true, $force));
382
+ }
383
+ // This prevents an array that's unchanged from being resent.
384
+ if ($update !== $this->serializeParamsValue($original, null, true, $force, $key)) {
385
+ return $update;
386
  }
387
+ } else {
388
+ // Associative array, i.e. a map
389
+ return Util\Util::convertToStripeObject($value, $this->_opts)->serializeParameters();
390
+ }
391
+ } elseif ($value instanceof StripeObject) {
392
+ $update = $value->serializeParameters($force);
393
+ if ($original && $unsaved && $key && static::getAdditiveParams()->includes($key)) {
394
+ $update = array_merge(self::emptyValues($original), $update);
395
  }
396
+ return $update;
397
+ } else {
398
+ return $value;
399
  }
 
 
400
  }
401
 
402
  public function jsonSerialize()
406
 
407
  public function __toJSON()
408
  {
409
+ return json_encode($this->__toArray(true), JSON_PRETTY_PRINT);
 
 
 
 
410
  }
411
 
412
  public function __toString()
423
  return $this->_values;
424
  }
425
  }
 
426
 
427
+ /**
428
+ * Sets all keys within the StripeObject as unsaved so that they will be
429
+ * included with an update when `serializeParameters` is called. This
430
+ * method is also recursive, so any StripeObjects contained as values or
431
+ * which are values in a tenant array are also marked as dirty.
432
+ */
433
+ public function dirty()
434
+ {
435
+ $this->_unsavedValues = new Util\Set(array_keys($this->_values));
436
+ foreach ($this->_values as $k => $v) {
437
+ $this->dirtyValue($v);
438
+ }
439
+ }
440
+
441
+ protected function dirtyValue($value)
442
+ {
443
+ if (is_array($value)) {
444
+ foreach ($value as $v) {
445
+ $this->dirtyValue($v);
446
+ }
447
+ } elseif ($value instanceof StripeObject) {
448
+ $value->dirty();
449
+ }
450
+ }
451
+
452
+ /**
453
+ * Produces a deep copy of the given object including support for arrays
454
+ * and StripeObjects.
455
+ */
456
+ protected static function deepCopy($obj)
457
+ {
458
+ if (is_array($obj)) {
459
+ $copy = [];
460
+ foreach ($obj as $k => $v) {
461
+ $copy[$k] = self::deepCopy($v);
462
+ }
463
+ return $copy;
464
+ } elseif ($obj instanceof StripeObject) {
465
+ return $obj::constructFrom(
466
+ self::deepCopy($obj->_values),
467
+ clone $obj->_opts
468
+ );
469
+ } else {
470
+ return $obj;
471
+ }
472
+ }
473
+
474
+ /**
475
+ * Returns a hash of empty values for all the values that are in the given
476
+ * StripeObject.
477
+ */
478
+ public static function emptyValues($obj)
479
+ {
480
+ if (is_array($obj)) {
481
+ $values = $obj;
482
+ } elseif ($obj instanceof StripeObject) {
483
+ $values = $obj->_values;
484
+ } else {
485
+ throw new \InvalidArgumentException(
486
+ "empty_values got got unexpected object type: " . get_class($obj)
487
+ );
488
+ }
489
+ $update = array_fill_keys(array_keys($values), "");
490
+ return $update;
491
+ }
492
+
493
+ /**
494
+ * @return object The last response from the Stripe API
495
+ */
496
+ public function getLastResponse()
497
+ {
498
+ return $this->_lastResponse;
499
+ }
500
+
501
+ /**
502
+ * Sets the last response from the Stripe API
503
+ *
504
+ * @param ApiResponse $resp
505
+ * @return void
506
+ */
507
+ public function setLastResponse($resp)
508
+ {
509
+ $this->_lastResponse = $resp;
510
+ }
511
+
512
+ /**
513
+ * Indicates whether or not the resource has been deleted on the server.
514
+ * Note that some, but not all, resources can indicate whether they have
515
+ * been deleted.
516
+ *
517
+ * @return bool Whether the resource is deleted.
518
+ */
519
+ public function isDeleted()
520
+ {
521
+ return isset($this->_values['deleted']) ? $this->_values['deleted'] : false;
522
+ }
523
+ }
app/api/Stripe/Subscription.php CHANGED
@@ -5,64 +5,75 @@ namespace Stripe;
5
  /**
6
  * Class Subscription
7
  *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class Subscription extends ApiResource
11
  {
12
- /**
13
- * These constants are possible representations of the status field.
14
- *
15
- * @link https://stripe.com/docs/api#subscription_object-status
16
- */
17
- const STATUS_ACTIVE = 'active';
18
- const STATUS_CANCELED = 'canceled';
19
- const STATUS_PAST_DUE = 'past_due';
20
- const STATUS_TRIALING = 'trialing';
21
- const STATUS_UNPAID = 'unpaid';
22
 
23
- /**
24
- * @param string $id The ID of the subscription to retrieve.
25
- * @param array|string|null $opts
26
- *
27
- * @return Subscription
28
- */
29
- public static function retrieve($id, $opts = null)
30
- {
31
- return self::_retrieve($id, $opts);
32
- }
33
-
34
- /**
35
- * @param array|null $params
36
- * @param array|string|null $opts
37
- *
38
- * @return Collection of Subscriptions
39
- */
40
- public static function all($params = null, $opts = null)
41
- {
42
- return self::_all($params, $opts);
43
  }
 
 
44
 
45
  /**
46
- * @param array|null $params
47
- * @param array|string|null $opts
48
  *
49
- * @return Subscription The created subscription.
50
  */
51
- public static function create($params = null, $opts = null)
52
- {
53
- return self::_create($params, $opts);
54
- }
 
 
 
55
 
56
- /**
57
- * @param string $id The ID of the subscription to retrieve.
58
- * @param array|null $params
59
- * @param array|string|null $options
60
- *
61
- * @return Subscription The updated subscription.
62
- */
63
- public static function update($id, $params = null, $options = null)
64
  {
65
- return self::_update($id, $params, $options);
 
 
 
 
 
 
66
  }
67
 
68
  /**
@@ -75,16 +86,6 @@ class Subscription extends ApiResource
75
  return $this->_delete($params, $opts);
76
  }
77
 
78
- /**
79
- * @param array|string|null $opts
80
- *
81
- * @return Subscription The saved subscription.
82
- */
83
- public function save($opts = null)
84
- {
85
- return $this->_save($opts);
86
- }
87
-
88
  /**
89
  * @return Subscription The updated subscription.
90
  */
@@ -92,6 +93,6 @@ class Subscription extends ApiResource
92
  {
93
  $url = $this->instanceUrl() . '/discount';
94
  list($response, $opts) = $this->_request('delete', $url);
95
- $this->refreshFrom(array('discount' => null), $opts, true);
96
  }
97
  }
5
  /**
6
  * Class Subscription
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property float $application_fee_percent
11
+ * @property string $billing
12
+ * @property int $billing_cycle_anchor
13
+ * @property mixed $billing_thresholds
14
+ * @property bool $cancel_at_period_end
15
+ * @property int $canceled_at
16
+ * @property string $collection_method
17
+ * @property int $created
18
+ * @property int $current_period_end
19
+ * @property int $current_period_start
20
+ * @property string $customer
21
+ * @property int $days_until_due
22
+ * @property string $default_payment_method
23
+ * @property string $default_source
24
+ * @property array $default_tax_rates
25
+ * @property Discount $discount
26
+ * @property int $ended_at
27
+ * @property Collection $items
28
+ * @property string $latest_invoice
29
+ * @property boolean $livemode
30
+ * @property StripeObject $metadata
31
+ * @property Plan $plan
32
+ * @property int $quantity
33
+ * @property SubscriptionSchedule $schedule
34
+ * @property int $start
35
+ * @property int $start_date
36
+ * @property string $status
37
+ * @property float $tax_percent
38
+ * @property int $trial_end
39
+ * @property int $trial_start
40
+ *
41
  * @package Stripe
42
  */
43
  class Subscription extends ApiResource
44
  {
45
+ const OBJECT_NAME = "subscription";
 
 
 
 
 
 
 
 
 
46
 
47
+ use ApiOperations\All;
48
+ use ApiOperations\Create;
49
+ use ApiOperations\Delete {
50
+ delete as protected _delete;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  }
52
+ use ApiOperations\Retrieve;
53
+ use ApiOperations\Update;
54
 
55
  /**
56
+ * These constants are possible representations of the status field.
 
57
  *
58
+ * @link https://stripe.com/docs/api#subscription_object-status
59
  */
60
+ const STATUS_ACTIVE = 'active';
61
+ const STATUS_CANCELED = 'canceled';
62
+ const STATUS_PAST_DUE = 'past_due';
63
+ const STATUS_TRIALING = 'trialing';
64
+ const STATUS_UNPAID = 'unpaid';
65
+ const STATUS_INCOMPLETE = 'incomplete';
66
+ const STATUS_INCOMPLETE_EXPIRED = 'incomplete_expired';
67
 
68
+ public static function getSavedNestedResources()
 
 
 
 
 
 
 
69
  {
70
+ static $savedNestedResources = null;
71
+ if ($savedNestedResources === null) {
72
+ $savedNestedResources = new Util\Set([
73
+ 'source',
74
+ ]);
75
+ }
76
+ return $savedNestedResources;
77
  }
78
 
79
  /**
86
  return $this->_delete($params, $opts);
87
  }
88
 
 
 
 
 
 
 
 
 
 
 
89
  /**
90
  * @return Subscription The updated subscription.
91
  */
93
  {
94
  $url = $this->instanceUrl() . '/discount';
95
  list($response, $opts) = $this->_request('delete', $url);
96
+ $this->refreshFrom(['discount' => null], $opts, true);
97
  }
98
  }
app/api/Stripe/SubscriptionItem.php CHANGED
@@ -5,84 +5,55 @@ namespace Stripe;
5
  /**
6
  * Class SubscriptionItem
7
  *
 
 
 
 
 
 
 
 
 
 
8
  * @package Stripe
9
  */
10
  class SubscriptionItem extends ApiResource
11
  {
12
- /**
13
- * This is a special case because the subscription items endpoint has an
14
- * underscore in it. The parent `className` function strips underscores.
15
- *
16
- * @return string The name of the class.
17
- */
18
- public static function className()
19
- {
20
- return 'subscription_item';
21
- }
22
 
23
- /**
24
- * @param string $id The ID of the subscription item to retrieve.
25
- * @param array|string|null $opts
26
- *
27
- * @return SubscriptionItem
28
- */
29
- public static function retrieve($id, $opts = null)
30
- {
31
- return self::_retrieve($id, $opts);
32
- }
33
 
34
- /**
35
- * @param array|null $params
36
- * @param array|string|null $opts
37
- *
38
- * @return Collection of SubscriptionItems
39
- */
40
- public static function all($params = null, $opts = null)
41
- {
42
- return self::_all($params, $opts);
43
- }
44
 
45
  /**
 
46
  * @param array|null $params
47
  * @param array|string|null $opts
48
  *
49
- * @return SubscriptionItem The created subscription item.
50
  */
51
- public static function create($params = null, $opts = null)
52
  {
53
- return self::_create($params, $opts);
54
  }
55
 
56
  /**
57
- * @param string $id The ID of the subscription item to update.
58
  * @param array|null $params
59
  * @param array|string|null $options
60
  *
61
- * @return SubscriptionItem The updated subscription item.
62
- */
63
- public static function update($id, $params = null, $options = null)
64
- {
65
- return self::_update($id, $params, $options);
66
- }
67
-
68
- /**
69
- * @param array|string|null $opts
70
- *
71
- * @return SubscriptionItem The saved subscription item.
72
- */
73
- public function save($opts = null)
74
- {
75
- return $this->_save($opts);
76
- }
77
-
78
- /**
79
- * @param array|null $params
80
- * @param array|string|null $opts
81
- *
82
- * @return SubscriptionItem The deleted subscription item.
83
  */
84
- public function delete($params = null, $opts = null)
85
  {
86
- return $this->_delete($params, $opts);
 
 
 
 
87
  }
88
  }
5
  /**
6
  * Class SubscriptionItem
7
  *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property mixed $billing_thresholds
11
+ * @property int $created
12
+ * @property StripeObject $metadata
13
+ * @property Plan $plan
14
+ * @property int $quantity
15
+ * @property string $subscription
16
+ * @property array $tax_rates
17
+ *
18
  * @package Stripe
19
  */
20
  class SubscriptionItem extends ApiResource
21
  {
22
+ const OBJECT_NAME = "subscription_item";
 
 
 
 
 
 
 
 
 
23
 
24
+ const PATH_USAGE_RECORDS = '/usage_records';
 
 
 
 
 
 
 
 
 
25
 
26
+ use ApiOperations\All;
27
+ use ApiOperations\Create;
28
+ use ApiOperations\Delete;
29
+ use ApiOperations\NestedResource;
30
+ use ApiOperations\Retrieve;
31
+ use ApiOperations\Update;
 
 
 
 
32
 
33
  /**
34
+ * @param string|null $id The ID of the subscription item on which to create the usage record.
35
  * @param array|null $params
36
  * @param array|string|null $opts
37
  *
38
+ * @return ApiResource
39
  */
40
+ public static function createUsageRecord($id, $params = null, $opts = null)
41
  {
42
+ return self::_createNestedResource($id, static::PATH_USAGE_RECORDS, $params, $opts);
43
  }
44
 
45
  /**
 
46
  * @param array|null $params
47
  * @param array|string|null $options
48
  *
49
+ * @return Collection The list of usage record summaries.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  */
51
+ public function usageRecordSummaries($params = null, $options = null)
52
  {
53
+ $url = $this->instanceUrl() . '/usage_record_summaries';
54
+ list($response, $opts) = $this->_request('get', $url, $params, $options);
55
+ $obj = Util\Util::convertToStripeObject($response, $opts);
56
+ $obj->setLastResponse($response);
57
+ return $obj;
58
  }
59
  }
app/api/Stripe/SubscriptionSchedule.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class SubscriptionSchedule
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $billing
11
+ * @property mixed $billing_thresholds
12
+ * @property int $canceled_at
13
+ * @property int $completed_at
14
+ * @property int $created
15
+ * @property mixed $current_phase
16
+ * @property string $customer
17
+ * @property mixed $invoice_settings
18
+ * @property boolean $livemode
19
+ * @property StripeObject $metadata
20
+ * @property mixed $phases
21
+ * @property int $released_at
22
+ * @property string $released_subscription
23
+ * @property string $renewal_behavior
24
+ * @property mixed $renewal_interval
25
+ * @property string $revision
26
+ * @property string $status
27
+ * @property string $subscription
28
+ *
29
+ * @package Stripe
30
+ */
31
+ class SubscriptionSchedule extends ApiResource
32
+ {
33
+ const OBJECT_NAME = "subscription_schedule";
34
+
35
+ use ApiOperations\All;
36
+ use ApiOperations\Create;
37
+ use ApiOperations\Retrieve;
38
+ use ApiOperations\Update;
39
+ use ApiOperations\NestedResource;
40
+
41
+ /**
42
+ * @param array|null $params
43
+ * @param array|string|null $opts
44
+ *
45
+ * @return SubscriptionSchedule The canceled subscription schedule.
46
+ */
47
+ public function cancel($params = null, $opts = null)
48
+ {
49
+ $url = $this->instanceUrl() . '/cancel';
50
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
51
+ $this->refreshFrom($response, $opts);
52
+ return $this;
53
+ }
54
+
55
+ /**
56
+ * @param array|null $params
57
+ * @param array|string|null $opts
58
+ *
59
+ * @return SubscriptionSchedule The released subscription schedule.
60
+ */
61
+ public function release($params = null, $opts = null)
62
+ {
63
+ $url = $this->instanceUrl() . '/release';
64
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
65
+ $this->refreshFrom($response, $opts);
66
+ return $this;
67
+ }
68
+ }
app/api/Stripe/TaxId.php ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class TaxId
7
+ *
8
+ * @package Stripe
9
+ *
10
+ * @property string $id
11
+ * @property string $object
12
+ * @property string $country
13
+ * @property int $created
14
+ * @property string $customer
15
+ * @property bool $livemode
16
+ * @property string $type
17
+ * @property string $value
18
+ * @property mixed $verification
19
+ */
20
+ class TaxId extends ApiResource
21
+ {
22
+ const OBJECT_NAME = "tax_id";
23
+
24
+ use ApiOperations\Delete;
25
+
26
+ /**
27
+ * Possible string representations of a tax id's type.
28
+ * @link https://stripe.com/docs/api/customer_tax_ids/object#tax_id_object-type
29
+ */
30
+ const TYPE_AU_ABN = 'au_abn';
31
+ const TYPE_EU_VAT = 'eu_vat';
32
+ const TYPE_IN_GST = 'in_gst';
33
+ const TYPE_NO_VAT = 'no_vat';
34
+ const TYPE_NZ_GST = 'nz_gst';
35
+ const TYPE_UNKNOWN = 'unknown';
36
+
37
+ /**
38
+ * Possible string representations of the verification status.
39
+ * @link https://stripe.com/docs/api/customer_tax_ids/object#tax_id_object-verification
40
+ */
41
+ const VERIFICATION_STATUS_PENDING = 'pending';
42
+ const VERIFICATION_STATUS_UNAVAILABLE = 'unavailable';
43
+ const VERIFICATION_STATUS_UNVERIFIED = 'unverified';
44
+ const VERIFICATION_STATUS_VERIFIED = 'verified';
45
+
46
+ /**
47
+ * @return string The API URL for this tax id.
48
+ */
49
+ public function instanceUrl()
50
+ {
51
+ $id = $this['id'];
52
+ $customer = $this['customer'];
53
+ if (!$id) {
54
+ throw new Error\InvalidRequest(
55
+ "Could not determine which URL to request: class instance has invalid ID: $id",
56
+ null
57
+ );
58
+ }
59
+ $id = Util\Util::utf8($id);
60
+ $customer = Util\Util::utf8($customer);
61
+
62
+ $base = Customer::classUrl();
63
+ $customerExtn = urlencode($customer);
64
+ $extn = urlencode($id);
65
+ return "$base/$customerExtn/tax_ids/$extn";
66
+ }
67
+
68
+ /**
69
+ * @param array|string $_id
70
+ * @param array|string|null $_opts
71
+ *
72
+ * @throws \Stripe\Error\InvalidRequest
73
+ */
74
+ public static function retrieve($_id, $_opts = null)
75
+ {
76
+ $msg = "Tax Ids cannot be accessed without a customer ID. " .
77
+ "Retrieve a Tax Id using Customer::retrieveTaxId('tax_id') instead.";
78
+ throw new Error\InvalidRequest($msg, null);
79
+ }
80
+ }
app/api/Stripe/TaxRate.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class TaxRate
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property bool $active
11
+ * @property int $created
12
+ * @property string $description
13
+ * @property string $display_name
14
+ * @property bool $inclusive
15
+ * @property string $jurisdiction
16
+ * @property bool $livemode
17
+ * @property StripeObject $metadata
18
+ * @property float $percentage
19
+ *
20
+ * @package Stripe
21
+ */
22
+ class TaxRate extends ApiResource
23
+ {
24
+ const OBJECT_NAME = "tax_rate";
25
+
26
+ use ApiOperations\All;
27
+ use ApiOperations\Create;
28
+ use ApiOperations\Retrieve;
29
+ use ApiOperations\Update;
30
+ }
app/api/Stripe/Terminal/ConnectionToken.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Terminal;
4
+
5
+ /**
6
+ * Class ConnectionToken
7
+ *
8
+ * @property string $secret
9
+ *
10
+ * @package Stripe\Terminal
11
+ */
12
+ class ConnectionToken extends \Stripe\ApiResource
13
+ {
14
+ const OBJECT_NAME = "terminal.connection_token";
15
+
16
+ use \Stripe\ApiOperations\Create;
17
+ }
app/api/Stripe/Terminal/Location.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Terminal;
4
+
5
+ /**
6
+ * Class Location
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property mixed $address
11
+ * @property bool $deleted
12
+ * @property string $display_name
13
+ *
14
+ * @package Stripe\Terminal
15
+ */
16
+ class Location extends \Stripe\ApiResource
17
+ {
18
+ const OBJECT_NAME = "terminal.location";
19
+
20
+ use \Stripe\ApiOperations\All;
21
+ use \Stripe\ApiOperations\Create;
22
+ use \Stripe\ApiOperations\Delete;
23
+ use \Stripe\ApiOperations\Retrieve;
24
+ use \Stripe\ApiOperations\Update;
25
+ }
app/api/Stripe/Terminal/Reader.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Terminal;
4
+
5
+ /**
6
+ * Class Reader
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property bool $deleted
11
+ * @property string $device_sw_version
12
+ * @property string $device_type
13
+ * @property string $ip_address
14
+ * @property string $label
15
+ * @property string $location
16
+ * @property string $serial_number
17
+ * @property string $status
18
+ *
19
+ * @package Stripe\Terminal
20
+ */
21
+ class Reader extends \Stripe\ApiResource
22
+ {
23
+ const OBJECT_NAME = "terminal.reader";
24
+
25
+ use \Stripe\ApiOperations\All;
26
+ use \Stripe\ApiOperations\Create;
27
+ use \Stripe\ApiOperations\Delete;
28
+ use \Stripe\ApiOperations\Retrieve;
29
+ use \Stripe\ApiOperations\Update;
30
+ }
app/api/Stripe/ThreeDSecure.php CHANGED
@@ -4,6 +4,11 @@ namespace Stripe;
4
 
5
  class ThreeDSecure extends ApiResource
6
  {
 
 
 
 
 
7
  /**
8
  * @return string The endpoint URL for the given class.
9
  */
@@ -11,26 +16,4 @@ class ThreeDSecure extends ApiResource
11
  {
12
  return "/v1/3d_secure";
13
  }
14
-
15
- /**
16
- * @param string $id The ID of the 3DS auth to retrieve.
17
- * @param array|string|null $options
18
- *
19
- * @return ThreeDSecure
20
- */
21
- public static function retrieve($id, $options = null)
22
- {
23
- return self::_retrieve($id, $options);
24
- }
25
-
26
- /**
27
- * @param array|null $params
28
- * @param array|string|null $opts
29
- *
30
- * @return ThreeDSecure The created 3D Secure object.
31
- */
32
- public static function create($params = null, $opts = null)
33
- {
34
- return self::_create($params, $opts);
35
- }
36
  }
4
 
5
  class ThreeDSecure extends ApiResource
6
  {
7
+ const OBJECT_NAME = "three_d_secure";
8
+
9
+ use ApiOperations\Create;
10
+ use ApiOperations\Retrieve;
11
+
12
  /**
13
  * @return string The endpoint URL for the given class.
14
  */
16
  {
17
  return "/v1/3d_secure";
18
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  }
app/api/Stripe/Token.php CHANGED
@@ -7,9 +7,9 @@ namespace Stripe;
7
  *
8
  * @property string $id
9
  * @property string $object
10
- * @property mixed $bank_account
11
- * @property mixed $card
12
- * @property mixed $client_ip
13
  * @property int $created
14
  * @property bool $livemode
15
  * @property string $type
@@ -19,25 +19,17 @@ namespace Stripe;
19
  */
20
  class Token extends ApiResource
21
  {
22
- /**
23
- * @param string $id The ID of the token to retrieve.
24
- * @param array|string|null $opts
25
- *
26
- * @return Token
27
- */
28
- public static function retrieve($id, $opts = null)
29
- {
30
- return self::_retrieve($id, $opts);
31
- }
32
 
33
  /**
34
- * @param array|null $params
35
- * @param array|string|null $opts
36
- *
37
- * @return Token The created token.
38
  */
39
- public static function create($params = null, $opts = null)
40
- {
41
- return self::_create($params, $opts);
42
- }
43
  }
7
  *
8
  * @property string $id
9
  * @property string $object
10
+ * @property BankAccount $bank_account
11
+ * @property Card $card
12
+ * @property string $client_ip
13
  * @property int $created
14
  * @property bool $livemode
15
  * @property string $type
19
  */
20
  class Token extends ApiResource
21
  {
22
+ const OBJECT_NAME = "token";
23
+
24
+ use ApiOperations\Create;
25
+ use ApiOperations\Retrieve;
 
 
 
 
 
 
26
 
27
  /**
28
+ * Possible string representations of the token type.
29
+ * @link https://stripe.com/docs/api/tokens/object#token_object-type
 
 
30
  */
31
+ const TYPE_ACCOUNT = 'account';
32
+ const TYPE_BANK_ACCOUNT = 'bank_account';
33
+ const TYPE_CARD = 'card';
34
+ const TYPE_PII = 'pii';
35
  }
app/api/Stripe/Topup.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Topup
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property string $balance_transaction
12
+ * @property int $created
13
+ * @property string $currency
14
+ * @property string $description
15
+ * @property int $expected_availability_date
16
+ * @property string $failure_code
17
+ * @property string $failure_message
18
+ * @property bool $livemode
19
+ * @property StripeObject $metadata
20
+ * @property mixed $source
21
+ * @property string $statement_descriptor
22
+ * @property string $status
23
+ * @property string $transfer_group
24
+ *
25
+ * @package Stripe
26
+ */
27
+ class Topup extends ApiResource
28
+ {
29
+ const OBJECT_NAME = "topup";
30
+
31
+ use ApiOperations\All;
32
+ use ApiOperations\Create;
33
+ use ApiOperations\Retrieve;
34
+ use ApiOperations\Update;
35
+
36
+ /**
37
+ * Possible string representations of the status of the top-up.
38
+ * @link https://stripe.com/docs/api/topups/object#topup_object-status
39
+ */
40
+ const STATUS_CANCELED = 'canceled';
41
+ const STATUS_FAILED = 'failed';
42
+ const STATUS_PENDING = 'pending';
43
+ const STATUS_REVERSED = 'reversed';
44
+ const STATUS_SUCCEEDED = 'succeeded';
45
+
46
+ /**
47
+ * @param array|null $params
48
+ * @param array|string|null $options
49
+ *
50
+ * @return Topup The canceled topup.
51
+ */
52
+ public function cancel($params = null, $options = null)
53
+ {
54
+ $url = $this->instanceUrl() . '/cancel';
55
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
56
+ $this->refreshFrom($response, $opts);
57
+ return $this;
58
+ }
59
+ }
app/api/Stripe/Transfer.php CHANGED
@@ -9,107 +9,112 @@ namespace Stripe;
9
  * @property string $object
10
  * @property int $amount
11
  * @property int $amount_reversed
12
- * @property mixed $application_fee
13
  * @property string $balance_transaction
14
  * @property int $created
15
  * @property string $currency
16
- * @property int $date
17
- * @property mixed $description
18
- * @property mixed $destination
19
- * @property mixed $destination_payment
20
- * @property mixed $failure_code
21
- * @property mixed $failure_message
22
- * @property mixed $fraud_details
23
- * @property mixed $invoice
24
  * @property bool $livemode
25
- * @property mixed $metadata
26
- * @property mixed $recipient
27
- * @property mixed $reversals
28
  * @property bool $reversed
29
- * @property mixed $source_transaction
30
  * @property string $source_type
31
- * @property mixed $statement_descriptor
32
- * @property string $status
33
- * @property string $type
34
  *
35
  * @package Stripe
36
  */
37
  class Transfer extends ApiResource
38
  {
 
 
 
 
 
 
 
 
 
 
39
  /**
40
- * @param string $id The ID of the transfer to retrieve.
41
- * @param array|string|null $opts
42
- *
43
- * @return Transfer
44
  */
45
- public static function retrieve($id, $opts = null)
46
- {
47
- return self::_retrieve($id, $opts);
48
- }
49
 
50
  /**
51
- * @param array|null $params
52
- * @param array|string|null $opts
53
- *
54
- * @return Collection of Transfers
55
  */
56
- public static function all($params = null, $opts = null)
57
  {
58
- return self::_all($params, $opts);
 
 
 
59
  }
60
 
61
  /**
62
- * @param array|null $params
63
- * @param array|string|null $opts
64
- *
65
- * @return Transfer The created transfer.
66
  */
67
- public static function create($params = null, $opts = null)
68
  {
69
- return self::_create($params, $opts);
 
 
 
70
  }
71
 
72
  /**
73
- * @param string $id The ID of the transfer to update.
74
  * @param array|null $params
75
- * @param array|string|null $options
76
  *
77
- * @return Transfer The updated transfer.
78
  */
79
- public static function update($id, $params = null, $options = null)
80
  {
81
- return self::_update($id, $params, $options);
82
  }
83
 
84
  /**
85
- * @return TransferReversal The created transfer reversal.
 
 
 
 
 
86
  */
87
- public function reverse($params = null, $opts = null)
88
  {
89
- $url = $this->instanceUrl() . '/reversals';
90
- list($response, $opts) = $this->_request('post', $url, $params, $opts);
91
- $this->refreshFrom($response, $opts);
92
- return $this;
93
  }
94
 
95
  /**
96
- * @return Transfer The canceled transfer.
 
 
 
 
 
97
  */
98
- public function cancel()
99
  {
100
- $url = $this->instanceUrl() . '/cancel';
101
- list($response, $opts) = $this->_request('post', $url);
102
- $this->refreshFrom($response, $opts);
103
- return $this;
104
  }
105
 
106
  /**
 
 
107
  * @param array|string|null $opts
108
  *
109
- * @return Transfer The saved transfer.
110
  */
111
- public function save($opts = null)
112
  {
113
- return $this->_save($opts);
114
  }
115
  }
9
  * @property string $object
10
  * @property int $amount
11
  * @property int $amount_reversed
 
12
  * @property string $balance_transaction
13
  * @property int $created
14
  * @property string $currency
15
+ * @property string $description
16
+ * @property string $destination
17
+ * @property string $destination_payment
 
 
 
 
 
18
  * @property bool $livemode
19
+ * @property StripeObject $metadata
20
+ * @property Collection $reversals
 
21
  * @property bool $reversed
22
+ * @property string $source_transaction
23
  * @property string $source_type
24
+ * @property string $transfer_group
 
 
25
  *
26
  * @package Stripe
27
  */
28
  class Transfer extends ApiResource
29
  {
30
+ const OBJECT_NAME = "transfer";
31
+
32
+ use ApiOperations\All;
33
+ use ApiOperations\Create;
34
+ use ApiOperations\NestedResource;
35
+ use ApiOperations\Retrieve;
36
+ use ApiOperations\Update;
37
+
38
+ const PATH_REVERSALS = '/reversals';
39
+
40
  /**
41
+ * Possible string representations of the source type of the transfer.
42
+ * @link https://stripe.com/docs/api/transfers/object#transfer_object-source_type
 
 
43
  */
44
+ const SOURCE_TYPE_ALIPAY_ACCOUNT = 'alipay_account';
45
+ const SOURCE_TYPE_BANK_ACCOUNT = 'bank_account';
46
+ const SOURCE_TYPE_CARD = 'card';
47
+ const SOURCE_TYPE_FINANCING = 'financing';
48
 
49
  /**
50
+ * @return TransferReversal The created transfer reversal.
 
 
 
51
  */
52
+ public function reverse($params = null, $opts = null)
53
  {
54
+ $url = $this->instanceUrl() . '/reversals';
55
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
56
+ $this->refreshFrom($response, $opts);
57
+ return $this;
58
  }
59
 
60
  /**
61
+ * @return Transfer The canceled transfer.
 
 
 
62
  */
63
+ public function cancel()
64
  {
65
+ $url = $this->instanceUrl() . '/cancel';
66
+ list($response, $opts) = $this->_request('post', $url);
67
+ $this->refreshFrom($response, $opts);
68
+ return $this;
69
  }
70
 
71
  /**
72
+ * @param string|null $id The ID of the transfer on which to create the reversal.
73
  * @param array|null $params
74
+ * @param array|string|null $opts
75
  *
76
+ * @return TransferReversal
77
  */
78
+ public static function createReversal($id, $params = null, $opts = null)
79
  {
80
+ return self::_createNestedResource($id, static::PATH_REVERSALS, $params, $opts);
81
  }
82
 
83
  /**
84
+ * @param string|null $id The ID of the transfer to which the reversal belongs.
85
+ * @param array|null $reversalId The ID of the reversal to retrieve.
86
+ * @param array|null $params
87
+ * @param array|string|null $opts
88
+ *
89
+ * @return TransferReversal
90
  */
91
+ public static function retrieveReversal($id, $reversalId, $params = null, $opts = null)
92
  {
93
+ return self::_retrieveNestedResource($id, static::PATH_REVERSALS, $reversalId, $params, $opts);
 
 
 
94
  }
95
 
96
  /**
97
+ * @param string|null $id The ID of the transfer to which the reversal belongs.
98
+ * @param array|null $reversalId The ID of the reversal to update.
99
+ * @param array|null $params
100
+ * @param array|string|null $opts
101
+ *
102
+ * @return TransferReversal
103
  */
104
+ public static function updateReversal($id, $reversalId, $params = null, $opts = null)
105
  {
106
+ return self::_updateNestedResource($id, static::PATH_REVERSALS, $reversalId, $params, $opts);
 
 
 
107
  }
108
 
109
  /**
110
+ * @param string|null $id The ID of the transfer on which to retrieve the reversals.
111
+ * @param array|null $params
112
  * @param array|string|null $opts
113
  *
114
+ * @return Collection The list of reversals.
115
  */
116
+ public static function allReversals($id, $params = null, $opts = null)
117
  {
118
+ return self::_allNestedResources($id, static::PATH_REVERSALS, $params, $opts);
119
  }
120
  }
app/api/Stripe/TransferReversal.php CHANGED
@@ -11,13 +11,21 @@ namespace Stripe;
11
  * @property string $balance_transaction
12
  * @property int $created
13
  * @property string $currency
14
- * @property mixed $metadata
 
 
15
  * @property string $transfer
16
  *
17
  * @package Stripe
18
  */
19
  class TransferReversal extends ApiResource
20
  {
 
 
 
 
 
 
21
  /**
22
  * @return string The API URL for this Stripe transfer reversal.
23
  */
11
  * @property string $balance_transaction
12
  * @property int $created
13
  * @property string $currency
14
+ * @property string $destination_payment_refund
15
+ * @property StripeObject $metadata
16
+ * @property string $source_refund
17
  * @property string $transfer
18
  *
19
  * @package Stripe
20
  */
21
  class TransferReversal extends ApiResource
22
  {
23
+ const OBJECT_NAME = "transfer_reversal";
24
+
25
+ use ApiOperations\Update {
26
+ save as protected _save;
27
+ }
28
+
29
  /**
30
  * @return string The API URL for this Stripe transfer reversal.
31
  */
app/api/Stripe/UsageRecord.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class UsageRecord
7
+ *
8
+ * @package Stripe
9
+ *
10
+ * @property string $id
11
+ * @property string $object
12
+ * @property bool $livemode
13
+ * @property int $quantity
14
+ * @property string $subscription_item
15
+ * @property int $timestamp
16
+ */
17
+ class UsageRecord extends ApiResource
18
+ {
19
+ const OBJECT_NAME = "usage_record";
20
+
21
+ /**
22
+ * @param array|null $params
23
+ * @param array|string|null $options
24
+ *
25
+ * @return \Stripe\ApiResource The created resource.
26
+ */
27
+ public static function create($params = null, $options = null)
28
+ {
29
+ self::_validateParams($params);
30
+ if (!array_key_exists('subscription_item', $params)) {
31
+ throw new Error\InvalidRequest("Missing subscription_item param in request", null);
32
+ }
33
+ $subscription_item = $params['subscription_item'];
34
+ $url = "/v1/subscription_items/$subscription_item/usage_records";
35
+ $request_params = $params;
36
+ unset($request_params['subscription_item']);
37
+
38
+ list($response, $opts) = static::_staticRequest('post', $url, $request_params, $options);
39
+ $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
40
+ $obj->setLastResponse($response);
41
+ return $obj;
42
+ }
43
+ }
app/api/Stripe/UsageRecordSummary.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class UsageRecord
7
+ *
8
+ * @package Stripe
9
+ *
10
+ * @property string $id
11
+ * @property string $object
12
+ * @property string $invoice
13
+ * @property bool $livemode
14
+ * @property mixed $period
15
+ * @property string $subscription_item
16
+ * @property int $total_usage
17
+ */
18
+ class UsageRecordSummary extends ApiResource
19
+ {
20
+ const OBJECT_NAME = "usage_record_summary";
21
+ }
app/api/Stripe/Util/AutoPagingIterator.php CHANGED
@@ -7,7 +7,7 @@ class AutoPagingIterator implements \Iterator
7
  private $lastId = null;
8
  private $page = null;
9
  private $pageOffset = 0;
10
- private $params = array();
11
 
12
  public function __construct($collection, $params)
13
  {
@@ -42,8 +42,8 @@ class AutoPagingIterator implements \Iterator
42
  $this->pageOffset += count($this->page->data);
43
  if ($this->page['has_more']) {
44
  $this->params = array_merge(
45
- $this->params ? $this->params : array(),
46
- array('starting_after' => $this->lastId)
47
  );
48
  $this->page = $this->page->all($this->params);
49
  } else {
7
  private $lastId = null;
8
  private $page = null;
9
  private $pageOffset = 0;
10
+ private $params = [];
11
 
12
  public function __construct($collection, $params)
13
  {
42
  $this->pageOffset += count($this->page->data);
43
  if ($this->page['has_more']) {
44
  $this->params = array_merge(
45
+ $this->params ?: [],
46
+ ['starting_after' => $this->lastId]
47
  );
48
  $this->page = $this->page->all($this->params);
49
  } else {
app/api/Stripe/Util/CaseInsensitiveArray.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Util;
4
+
5
+ use ArrayAccess;
6
+
7
+ /**
8
+ * CaseInsensitiveArray is an array-like class that ignores case for keys.
9
+ *
10
+ * It is used to store HTTP headers. Per RFC 2616, section 4.2:
11
+ * Each header field consists of a name followed by a colon (":") and the field value. Field names
12
+ * are case-insensitive.
13
+ *
14
+ * In the context of stripe-php, this is useful because the API will return headers with different
15
+ * case depending on whether HTTP/2 is used or not (with HTTP/2, headers are always in lowercase).
16
+ */
17
+ class CaseInsensitiveArray implements ArrayAccess
18
+ {
19
+ private $container = array();
20
+
21
+ public function __construct($initial_array = array())
22
+ {
23
+ $this->container = array_map("strtolower", $initial_array);
24
+ }
25
+
26
+ public function offsetSet($offset, $value)
27
+ {
28
+ $offset = static::maybeLowercase($offset);
29
+ if (is_null($offset)) {
30
+ $this->container[] = $value;
31
+ } else {
32
+ $this->container[$offset] = $value;
33
+ }
34
+ }
35
+
36
+ public function offsetExists($offset)
37
+ {
38
+ $offset = static::maybeLowercase($offset);
39
+ return isset($this->container[$offset]);
40
+ }
41
+
42
+ public function offsetUnset($offset)
43
+ {
44
+ $offset = static::maybeLowercase($offset);
45
+ unset($this->container[$offset]);
46
+ }
47
+
48
+ public function offsetGet($offset)
49
+ {
50
+ $offset = static::maybeLowercase($offset);
51
+ return isset($this->container[$offset]) ? $this->container[$offset] : null;
52
+ }
53
+
54
+ private static function maybeLowercase($v)
55
+ {
56
+ if (is_string($v)) {
57
+ return strtolower($v);
58
+ } else {
59
+ return $v;
60
+ }
61
+ }
62
+ }
app/api/Stripe/Util/DefaultLogger.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Util;
4
+
5
+ /**
6
+ * A very basic implementation of LoggerInterface that has just enough
7
+ * functionality that it can be the default for this library.
8
+ */
9
+ class DefaultLogger implements LoggerInterface
10
+ {
11
+ public function error($message, array $context = [])
12
+ {
13
+ if (count($context) > 0) {
14
+ throw new \Exception('DefaultLogger does not currently implement context. Please implement if you need it.');
15
+ }
16
+ error_log($message);
17
+ }
18
+ }
app/api/Stripe/Util/LoggerInterface.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Util;
4
+
5
+ /**
6
+ * Describes a logger instance.
7
+ *
8
+ * This is a subset of the interface of the same name in the PSR-3 logger
9
+ * interface. We guarantee to keep it compatible, but we'd redefined it here so
10
+ * that we don't have to pull in the extra dependencies for users who don't want
11
+ * it.
12
+ *
13
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
14
+ * for the full interface specification.
15
+ *
16
+ * The message MUST be a string or object implementing __toString().
17
+ *
18
+ * The message MAY contain placeholders in the form: {foo} where foo
19
+ * will be replaced by the context data in key "foo".
20
+ *
21
+ * The context array can contain arbitrary data, the only assumption that
22
+ * can be made by implementors is that if an Exception instance is given
23
+ * to produce a stack trace, it MUST be in a key named "exception".
24
+ */
25
+ interface LoggerInterface
26
+ {
27
+ /**
28
+ * Runtime errors that do not require immediate action but should typically
29
+ * be logged and monitored.
30
+ *
31
+ * @param string $message
32
+ * @param array $context
33
+ * @return null
34
+ */
35
+ public function error($message, array $context = []);
36
+ }
app/api/Stripe/Util/RandomGenerator.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Util;
4
+
5
+ /**
6
+ * A basic random generator. This is in a separate class so we the generator
7
+ * can be injected as a dependency and replaced with a mock in tests.
8
+ */
9
+ class RandomGenerator
10
+ {
11
+ /**
12
+ * Returns a random value between 0 and $max.
13
+ *
14
+ * @param float $max (optional)
15
+ * @return float
16
+ */
17
+ public function randFloat($max = 1.0)
18
+ {
19
+ return mt_rand() / mt_getrandmax() * $max;
20
+ }
21
+
22
+ /**
23
+ * Returns a v4 UUID.
24
+ *
25
+ * @return string
26
+ */
27
+ public function uuid()
28
+ {
29
+ $arr = array_values(unpack('N1a/n4b/N1c', openssl_random_pseudo_bytes(16)));
30
+ $arr[2] = ($arr[2] & 0x0fff) | 0x4000;
31
+ $arr[3] = ($arr[3] & 0x3fff) | 0x8000;
32
+ return vsprintf('%08x-%04x-%04x-%04x-%04x%08x', $arr);
33
+ }
34
+ }
app/api/Stripe/Util/RequestOptions.php CHANGED
@@ -6,13 +6,23 @@ use Stripe\Error;
6
 
7
  class RequestOptions
8
  {
 
 
 
 
 
 
 
 
9
  public $headers;
10
  public $apiKey;
 
11
 
12
- public function __construct($key = null, $headers = array())
13
  {
14
  $this->apiKey = $key;
15
  $this->headers = $headers;
 
16
  }
17
 
18
  /**
@@ -28,10 +38,25 @@ class RequestOptions
28
  if ($other_options->apiKey === null) {
29
  $other_options->apiKey = $this->apiKey;
30
  }
 
 
 
31
  $other_options->headers = array_merge($this->headers, $other_options->headers);
32
  return $other_options;
33
  }
34
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  /**
36
  * Unpacks an options array into an RequestOptions object
37
  * @param array|string|null $options a key => value array
@@ -45,16 +70,17 @@ class RequestOptions
45
  }
46
 
47
  if (is_null($options)) {
48
- return new RequestOptions(null, array());
49
  }
50
 
51
  if (is_string($options)) {
52
- return new RequestOptions($options, array());
53
  }
54
 
55
  if (is_array($options)) {
56
- $headers = array();
57
  $key = null;
 
58
  if (array_key_exists('api_key', $options)) {
59
  $key = $options['api_key'];
60
  }
@@ -67,7 +93,10 @@ class RequestOptions
67
  if (array_key_exists('stripe_version', $options)) {
68
  $headers['Stripe-Version'] = $options['stripe_version'];
69
  }
70
- return new RequestOptions($key, $headers);
 
 
 
71
  }
72
 
73
  $message = 'The second argument to Stripe API method calls is an '
6
 
7
  class RequestOptions
8
  {
9
+ /**
10
+ * @var array A list of headers that should be persisted across requests.
11
+ */
12
+ public static $HEADERS_TO_PERSIST = [
13
+ 'Stripe-Account',
14
+ 'Stripe-Version',
15
+ ];
16
+
17
  public $headers;
18
  public $apiKey;
19
+ public $apiBase;
20
 
21
+ public function __construct($key = null, $headers = [], $base = null)
22
  {
23
  $this->apiKey = $key;
24
  $this->headers = $headers;
25
+ $this->apiBase = $base;
26
  }
27
 
28
  /**
38
  if ($other_options->apiKey === null) {
39
  $other_options->apiKey = $this->apiKey;
40
  }
41
+ if ($other_options->apiBase === null) {
42
+ $other_options->apiBase = $this->apiBase;
43
+ }
44
  $other_options->headers = array_merge($this->headers, $other_options->headers);
45
  return $other_options;
46
  }
47
 
48
+ /**
49
+ * Discards all headers that we don't want to persist across requests.
50
+ */
51
+ public function discardNonPersistentHeaders()
52
+ {
53
+ foreach ($this->headers as $k => $v) {
54
+ if (!in_array($k, self::$HEADERS_TO_PERSIST)) {
55
+ unset($this->headers[$k]);
56
+ }
57
+ }
58
+ }
59
+
60
  /**
61
  * Unpacks an options array into an RequestOptions object
62
  * @param array|string|null $options a key => value array
70
  }
71
 
72
  if (is_null($options)) {
73
+ return new RequestOptions(null, [], null);
74
  }
75
 
76
  if (is_string($options)) {
77
+ return new RequestOptions($options, [], null);
78
  }
79
 
80
  if (is_array($options)) {
81
+ $headers = [];
82
  $key = null;
83
+ $base = null;
84
  if (array_key_exists('api_key', $options)) {
85
  $key = $options['api_key'];
86
  }
93
  if (array_key_exists('stripe_version', $options)) {
94
  $headers['Stripe-Version'] = $options['stripe_version'];
95
  }
96
+ if (array_key_exists('api_base', $options)) {
97
+ $base = $options['api_base'];
98
+ }
99
+ return new RequestOptions($key, $headers, $base);
100
  }
101
 
102
  $message = 'The second argument to Stripe API method calls is an '
app/api/Stripe/Util/Set.php CHANGED
@@ -9,9 +9,9 @@ class Set implements IteratorAggregate
9
  {
10
  private $_elts;
11
 
12
- public function __construct($members = array())
13
  {
14
- $this->_elts = array();
15
  foreach ($members as $item) {
16
  $this->_elts[$item] = true;
17
  }
9
  {
10
  private $_elts;
11
 
12
+ public function __construct($members = [])
13
  {
14
+ $this->_elts = [];
15
  foreach ($members as $item) {
16
  $this->_elts[$item] = true;
17
  }
app/api/Stripe/Util/Util.php CHANGED
@@ -7,24 +7,26 @@ use Stripe\StripeObject;
7
  abstract class Util
8
  {
9
  private static $isMbstringAvailable = null;
 
10
 
11
  /**
12
  * Whether the provided array (or other) is a list rather than a dictionary.
 
 
13
  *
14
  * @param array|mixed $array
15
- * @return boolean True if the given object is a list.
16
  */
17
  public static function isList($array)
18
  {
19
  if (!is_array($array)) {
20
  return false;
21
  }
22
-
23
- // TODO: generally incorrect, but it's correct given Stripe's response
24
- foreach (array_keys($array) as $k) {
25
- if (!is_numeric($k)) {
26
- return false;
27
- }
28
  }
29
  return true;
30
  }
@@ -37,7 +39,7 @@ abstract class Util
37
  */
38
  public static function convertStripeObjectToArray($values)
39
  {
40
- $results = array();
41
  foreach ($values as $k => $v) {
42
  // FIXME: this is an encapsulation violation
43
  if ($k[0] == '_') {
@@ -63,43 +65,92 @@ abstract class Util
63
  */
64
  public static function convertToStripeObject($resp, $opts)
65
  {
66
- $types = array(
67
- 'account' => 'Stripe\\Account',
68
- 'alipay_account' => 'Stripe\\AlipayAccount',
69
- 'apple_pay_domain' => 'Stripe\\ApplePayDomain',
70
- 'bank_account' => 'Stripe\\BankAccount',
71
- 'balance_transaction' => 'Stripe\\BalanceTransaction',
72
- 'card' => 'Stripe\\Card',
73
- 'charge' => 'Stripe\\Charge',
74
- 'country_spec' => 'Stripe\\CountrySpec',
75
- 'coupon' => 'Stripe\\Coupon',
76
- 'customer' => 'Stripe\\Customer',
77
- 'dispute' => 'Stripe\\Dispute',
78
- 'list' => 'Stripe\\Collection',
79
- 'invoice' => 'Stripe\\Invoice',
80
- 'invoiceitem' => 'Stripe\\InvoiceItem',
81
- 'event' => 'Stripe\\Event',
82
- 'file' => 'Stripe\\FileUpload',
83
- 'token' => 'Stripe\\Token',
84
- 'transfer' => 'Stripe\\Transfer',
85
- 'transfer_reversal' => 'Stripe\\TransferReversal',
86
- 'order' => 'Stripe\\Order',
87
- 'order_return' => 'Stripe\\OrderReturn',
88
- 'plan' => 'Stripe\\Plan',
89
- 'product' => 'Stripe\\Product',
90
- 'recipient' => 'Stripe\\Recipient',
91
- 'refund' => 'Stripe\\Refund',
92
- 'sku' => 'Stripe\\SKU',
93
- 'source' => 'Stripe\\Source',
94
- 'subscription' => 'Stripe\\Subscription',
95
- 'subscription_item' => 'Stripe\\SubscriptionItem',
96
- 'three_d_secure' => 'Stripe\\ThreeDSecure',
97
- 'fee_refund' => 'Stripe\\ApplicationFeeRefund',
98
- 'bitcoin_receiver' => 'Stripe\\BitcoinReceiver',
99
- 'bitcoin_transaction' => 'Stripe\\BitcoinTransaction',
100
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  if (self::isList($resp)) {
102
- $mapped = array();
103
  foreach ($resp as $i) {
104
  array_push($mapped, self::convertToStripeObject($i, $opts));
105
  }
@@ -141,4 +192,169 @@ abstract class Util
141
  return $value;
142
  }
143
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  }
7
  abstract class Util
8
  {
9
  private static $isMbstringAvailable = null;
10
+ private static $isHashEqualsAvailable = null;
11
 
12
  /**
13
  * Whether the provided array (or other) is a list rather than a dictionary.
14
+ * A list is defined as an array for which all the keys are consecutive
15
+ * integers starting at 0. Empty arrays are considered to be lists.
16
  *
17
  * @param array|mixed $array
18
+ * @return boolean true if the given object is a list.
19
  */
20
  public static function isList($array)
21
  {
22
  if (!is_array($array)) {
23
  return false;
24
  }
25
+ if ($array === []) {
26
+ return true;
27
+ }
28
+ if (array_keys($array) !== range(0, count($array) - 1)) {
29
+ return false;
 
30
  }
31
  return true;
32
  }
39
  */
40
  public static function convertStripeObjectToArray($values)
41
  {
42
+ $results = [];
43
  foreach ($values as $k => $v) {
44
  // FIXME: this is an encapsulation violation
45
  if ($k[0] == '_') {
65
  */
66
  public static function convertToStripeObject($resp, $opts)
67
  {
68
+ $types = [
69
+ // data structures
70
+ \Stripe\Collection::OBJECT_NAME => 'Stripe\\Collection',
71
+
72
+ // business objects
73
+ \Stripe\Account::OBJECT_NAME => 'Stripe\\Account',
74
+ \Stripe\AccountLink::OBJECT_NAME => 'Stripe\\AccountLink',
75
+ \Stripe\AlipayAccount::OBJECT_NAME => 'Stripe\\AlipayAccount',
76
+ \Stripe\ApplePayDomain::OBJECT_NAME => 'Stripe\\ApplePayDomain',
77
+ \Stripe\ApplicationFee::OBJECT_NAME => 'Stripe\\ApplicationFee',
78
+ \Stripe\Balance::OBJECT_NAME => 'Stripe\\Balance',
79
+ \Stripe\BalanceTransaction::OBJECT_NAME => 'Stripe\\BalanceTransaction',
80
+ \Stripe\BankAccount::OBJECT_NAME => 'Stripe\\BankAccount',
81
+ \Stripe\BitcoinReceiver::OBJECT_NAME => 'Stripe\\BitcoinReceiver',
82
+ \Stripe\BitcoinTransaction::OBJECT_NAME => 'Stripe\\BitcoinTransaction',
83
+ \Stripe\Capability::OBJECT_NAME => 'Stripe\\Capability',
84
+ \Stripe\Card::OBJECT_NAME => 'Stripe\\Card',
85
+ \Stripe\Charge::OBJECT_NAME => 'Stripe\\Charge',
86
+ \Stripe\Checkout\Session::OBJECT_NAME => 'Stripe\\Checkout\\Session',
87
+ \Stripe\CountrySpec::OBJECT_NAME => 'Stripe\\CountrySpec',
88
+ \Stripe\Coupon::OBJECT_NAME => 'Stripe\\Coupon',
89
+ \Stripe\CreditNote::OBJECT_NAME => 'Stripe\\CreditNote',
90
+ \Stripe\Customer::OBJECT_NAME => 'Stripe\\Customer',
91
+ \Stripe\CustomerBalanceTransaction::OBJECT_NAME => 'Stripe\\CustomerBalanceTransaction',
92
+ \Stripe\Discount::OBJECT_NAME => 'Stripe\\Discount',
93
+ \Stripe\Dispute::OBJECT_NAME => 'Stripe\\Dispute',
94
+ \Stripe\EphemeralKey::OBJECT_NAME => 'Stripe\\EphemeralKey',
95
+ \Stripe\Event::OBJECT_NAME => 'Stripe\\Event',
96
+ \Stripe\ExchangeRate::OBJECT_NAME => 'Stripe\\ExchangeRate',
97
+ \Stripe\ApplicationFeeRefund::OBJECT_NAME => 'Stripe\\ApplicationFeeRefund',
98
+ \Stripe\File::OBJECT_NAME => 'Stripe\\File',
99
+ \Stripe\File::OBJECT_NAME_ALT => 'Stripe\\File',
100
+ \Stripe\FileLink::OBJECT_NAME => 'Stripe\\FileLink',
101
+ \Stripe\Invoice::OBJECT_NAME => 'Stripe\\Invoice',
102
+ \Stripe\InvoiceItem::OBJECT_NAME => 'Stripe\\InvoiceItem',
103
+ \Stripe\InvoiceLineItem::OBJECT_NAME => 'Stripe\\InvoiceLineItem',
104
+ \Stripe\IssuerFraudRecord::OBJECT_NAME => 'Stripe\\IssuerFraudRecord',
105
+ \Stripe\Issuing\Authorization::OBJECT_NAME => 'Stripe\\Issuing\\Authorization',
106
+ \Stripe\Issuing\Card::OBJECT_NAME => 'Stripe\\Issuing\\Card',
107
+ \Stripe\Issuing\CardDetails::OBJECT_NAME => 'Stripe\\Issuing\\CardDetails',
108
+ \Stripe\Issuing\Cardholder::OBJECT_NAME => 'Stripe\\Issuing\\Cardholder',
109
+ \Stripe\Issuing\Dispute::OBJECT_NAME => 'Stripe\\Issuing\\Dispute',
110
+ \Stripe\Issuing\Transaction::OBJECT_NAME => 'Stripe\\Issuing\\Transaction',
111
+ \Stripe\LoginLink::OBJECT_NAME => 'Stripe\\LoginLink',
112
+ \Stripe\Order::OBJECT_NAME => 'Stripe\\Order',
113
+ \Stripe\OrderItem::OBJECT_NAME => 'Stripe\\OrderItem',
114
+ \Stripe\OrderReturn::OBJECT_NAME => 'Stripe\\OrderReturn',
115
+ \Stripe\PaymentIntent::OBJECT_NAME => 'Stripe\\PaymentIntent',
116
+ \Stripe\PaymentMethod::OBJECT_NAME => 'Stripe\\PaymentMethod',
117
+ \Stripe\Payout::OBJECT_NAME => 'Stripe\\Payout',
118
+ \Stripe\Person::OBJECT_NAME => 'Stripe\\Person',
119
+ \Stripe\Plan::OBJECT_NAME => 'Stripe\\Plan',
120
+ \Stripe\Product::OBJECT_NAME => 'Stripe\\Product',
121
+ \Stripe\Radar\EarlyFraudWarning::OBJECT_NAME => 'Stripe\\Radar\\EarlyFraudWarning',
122
+ \Stripe\Radar\ValueList::OBJECT_NAME => 'Stripe\\Radar\\ValueList',
123
+ \Stripe\Radar\ValueListItem::OBJECT_NAME => 'Stripe\\Radar\\ValueListItem',
124
+ \Stripe\Recipient::OBJECT_NAME => 'Stripe\\Recipient',
125
+ \Stripe\RecipientTransfer::OBJECT_NAME => 'Stripe\\RecipientTransfer',
126
+ \Stripe\Refund::OBJECT_NAME => 'Stripe\\Refund',
127
+ \Stripe\Reporting\ReportRun::OBJECT_NAME => 'Stripe\\Reporting\\ReportRun',
128
+ \Stripe\Reporting\ReportType::OBJECT_NAME => 'Stripe\\Reporting\\ReportType',
129
+ \Stripe\Review::OBJECT_NAME => 'Stripe\\Review',
130
+ \Stripe\SetupIntent::OBJECT_NAME => 'Stripe\\SetupIntent',
131
+ \Stripe\SKU::OBJECT_NAME => 'Stripe\\SKU',
132
+ \Stripe\Sigma\ScheduledQueryRun::OBJECT_NAME => 'Stripe\\Sigma\\ScheduledQueryRun',
133
+ \Stripe\Source::OBJECT_NAME => 'Stripe\\Source',
134
+ \Stripe\SourceTransaction::OBJECT_NAME => 'Stripe\\SourceTransaction',
135
+ \Stripe\Subscription::OBJECT_NAME => 'Stripe\\Subscription',
136
+ \Stripe\SubscriptionItem::OBJECT_NAME => 'Stripe\\SubscriptionItem',
137
+ \Stripe\SubscriptionSchedule::OBJECT_NAME => 'Stripe\\SubscriptionSchedule',
138
+ \Stripe\TaxId::OBJECT_NAME => 'Stripe\\TaxId',
139
+ \Stripe\TaxRate::OBJECT_NAME => 'Stripe\\TaxRate',
140
+ \Stripe\ThreeDSecure::OBJECT_NAME => 'Stripe\\ThreeDSecure',
141
+ \Stripe\Terminal\ConnectionToken::OBJECT_NAME => 'Stripe\\Terminal\\ConnectionToken',
142
+ \Stripe\Terminal\Location::OBJECT_NAME => 'Stripe\\Terminal\\Location',
143
+ \Stripe\Terminal\Reader::OBJECT_NAME => 'Stripe\\Terminal\\Reader',
144
+ \Stripe\Token::OBJECT_NAME => 'Stripe\\Token',
145
+ \Stripe\Topup::OBJECT_NAME => 'Stripe\\Topup',
146
+ \Stripe\Transfer::OBJECT_NAME => 'Stripe\\Transfer',
147
+ \Stripe\TransferReversal::OBJECT_NAME => 'Stripe\\TransferReversal',
148
+ \Stripe\UsageRecord::OBJECT_NAME => 'Stripe\\UsageRecord',
149
+ \Stripe\UsageRecordSummary::OBJECT_NAME => 'Stripe\\UsageRecordSummary',
150
+ \Stripe\WebhookEndpoint::OBJECT_NAME => 'Stripe\\WebhookEndpoint',
151
+ ];
152
  if (self::isList($resp)) {
153
+ $mapped = [];
154
  foreach ($resp as $i) {
155
  array_push($mapped, self::convertToStripeObject($i, $opts));
156
  }
192
  return $value;
193
  }
194
  }
195
+
196
+ /**
197
+ * Compares two strings for equality. The time taken is independent of the
198
+ * number of characters that match.
199
+ *
200
+ * @param string $a one of the strings to compare.
201
+ * @param string $b the other string to compare.
202
+ * @return bool true if the strings are equal, false otherwise.
203
+ */
204
+ public static function secureCompare($a, $b)
205
+ {
206
+ if (self::$isHashEqualsAvailable === null) {
207
+ self::$isHashEqualsAvailable = function_exists('hash_equals');
208
+ }
209
+
210
+ if (self::$isHashEqualsAvailable) {
211
+ return hash_equals($a, $b);
212
+ } else {
213
+ if (strlen($a) != strlen($b)) {
214
+ return false;
215
+ }
216
+
217
+ $result = 0;
218
+ for ($i = 0; $i < strlen($a); $i++) {
219
+ $result |= ord($a[$i]) ^ ord($b[$i]);
220
+ }
221
+ return ($result == 0);
222
+ }
223
+ }
224
+
225
+ /**
226
+ * Recursively goes through an array of parameters. If a parameter is an instance of
227
+ * ApiResource, then it is replaced by the resource's ID.
228
+ * Also clears out null values.
229
+ *
230
+ * @param mixed $h
231
+ * @return mixed
232
+ */
233
+ public static function objectsToIds($h)
234
+ {
235
+ if ($h instanceof \Stripe\ApiResource) {
236
+ return $h->id;
237
+ } elseif (static::isList($h)) {
238
+ $results = [];
239
+ foreach ($h as $v) {
240
+ array_push($results, static::objectsToIds($v));
241
+ }
242
+ return $results;
243
+ } elseif (is_array($h)) {
244
+ $results = [];
245
+ foreach ($h as $k => $v) {
246
+ if (is_null($v)) {
247
+ continue;
248
+ }
249
+ $results[$k] = static::objectsToIds($v);
250
+ }
251
+ return $results;
252
+ } else {
253
+ return $h;
254
+ }
255
+ }
256
+
257
+ /**
258
+ * @param array $params
259
+ *
260
+ * @return string
261
+ */
262
+ public static function encodeParameters($params)
263
+ {
264
+ $flattenedParams = self::flattenParams($params);
265
+ $pieces = [];
266
+ foreach ($flattenedParams as $param) {
267
+ list($k, $v) = $param;
268
+ array_push($pieces, self::urlEncode($k) . '=' . self::urlEncode($v));
269
+ }
270
+ return implode('&', $pieces);
271
+ }
272
+
273
+ /**
274
+ * @param array $params
275
+ * @param string|null $parentKey
276
+ *
277
+ * @return array
278
+ */
279
+ public static function flattenParams($params, $parentKey = null)
280
+ {
281
+ $result = [];
282
+
283
+ foreach ($params as $key => $value) {
284
+ $calculatedKey = $parentKey ? "{$parentKey}[{$key}]" : $key;
285
+
286
+ if (self::isList($value)) {
287
+ $result = array_merge($result, self::flattenParamsList($value, $calculatedKey));
288
+ } elseif (is_array($value)) {
289
+ $result = array_merge($result, self::flattenParams($value, $calculatedKey));
290
+ } else {
291
+ array_push($result, [$calculatedKey, $value]);
292
+ }
293
+ }
294
+
295
+ return $result;
296
+ }
297
+
298
+ /**
299
+ * @param array $value
300
+ * @param string $calculatedKey
301
+ *
302
+ * @return array
303
+ */
304
+ public static function flattenParamsList($value, $calculatedKey)
305
+ {
306
+ $result = [];
307
+
308
+ foreach ($value as $i => $elem) {
309
+ if (self::isList($elem)) {
310
+ $result = array_merge($result, self::flattenParamsList($elem, $calculatedKey));
311
+ } elseif (is_array($elem)) {
312
+ $result = array_merge($result, self::flattenParams($elem, "{$calculatedKey}[{$i}]"));
313
+ } else {
314
+ array_push($result, ["{$calculatedKey}[{$i}]", $elem]);
315
+ }
316
+ }
317
+
318
+ return $result;
319
+ }
320
+
321
+ /**
322
+ * @param string $key A string to URL-encode.
323
+ *
324
+ * @return string The URL-encoded string.
325
+ */
326
+ public static function urlEncode($key)
327
+ {
328
+ $s = urlencode($key);
329
+
330
+ // Don't use strict form encoding by changing the square bracket control
331
+ // characters back to their literals. This is fine by the server, and
332
+ // makes these parameter strings easier to read.
333
+ $s = str_replace('%5B', '[', $s);
334
+ $s = str_replace('%5D', ']', $s);
335
+
336
+ return $s;
337
+ }
338
+
339
+ public static function normalizeId($id)
340
+ {
341
+ if (is_array($id)) {
342
+ $params = $id;
343
+ $id = $params['id'];
344
+ unset($params['id']);
345
+ } else {
346
+ $params = [];
347
+ }
348
+ return [$id, $params];
349
+ }
350
+
351
+ /**
352
+ * Returns UNIX timestamp in milliseconds
353
+ *
354
+ * @return integer current time in millis
355
+ */
356
+ public static function currentTimeMillis()
357
+ {
358
+ return (int) round(microtime(true) * 1000);
359
+ }
360
  }
app/api/Stripe/Webhook.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ abstract class Webhook
6
+ {
7
+ const DEFAULT_TOLERANCE = 300;
8
+
9
+ /**
10
+ * Returns an Event instance using the provided JSON payload. Throws a
11
+ * \UnexpectedValueException if the payload is not valid JSON, and a
12
+ * \Stripe\SignatureVerificationException if the signature verification
13
+ * fails for any reason.
14
+ *
15
+ * @param string $payload the payload sent by Stripe.
16
+ * @param string $sigHeader the contents of the signature header sent by
17
+ * Stripe.
18
+ * @param string $secret secret used to generate the signature.
19
+ * @param int $tolerance maximum difference allowed between the header's
20
+ * timestamp and the current time
21
+ * @return \Stripe\Event the Event instance
22
+ * @throws \UnexpectedValueException if the payload is not valid JSON,
23
+ * @throws \Stripe\Error\SignatureVerification if the verification fails.
24
+ */
25
+ public static function constructEvent($payload, $sigHeader, $secret, $tolerance = self::DEFAULT_TOLERANCE)
26
+ {
27
+ WebhookSignature::verifyHeader($payload, $sigHeader, $secret, $tolerance);
28
+
29
+ $data = json_decode($payload, true);
30
+ $jsonError = json_last_error();
31
+ if ($data === null && $jsonError !== JSON_ERROR_NONE) {
32
+ $msg = "Invalid payload: $payload "
33
+ . "(json_last_error() was $jsonError)";
34
+ throw new \UnexpectedValueException($msg);
35
+ }
36
+ $event = Event::constructFrom($data);
37
+
38
+ return $event;
39
+ }
40
+ }
app/api/Stripe/WebhookEndpoint.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class WebhookEndpoint
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $created
11
+ * @property string[] $enabled_events
12
+ * @property bool $livemode
13
+ * @property string $secret
14
+ * @property string $status
15
+ * @property string $url
16
+ *
17
+ * @package Stripe
18
+ */
19
+ class WebhookEndpoint extends ApiResource
20
+ {
21
+ const OBJECT_NAME = "webhook_endpoint";
22
+
23
+ use ApiOperations\All;
24
+ use ApiOperations\Create;
25
+ use ApiOperations\Delete;
26
+ use ApiOperations\Retrieve;
27
+ use ApiOperations\Update;
28
+ }
app/api/Stripe/WebhookSignature.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ abstract class WebhookSignature
6
+ {
7
+ const EXPECTED_SCHEME = "v1";
8
+
9
+ /**
10
+ * Verifies the signature header sent by Stripe. Throws a
11
+ * SignatureVerification exception if the verification fails for any
12
+ * reason.
13
+ *
14
+ * @param string $payload the payload sent by Stripe.
15
+ * @param string $header the contents of the signature header sent by
16
+ * Stripe.
17
+ * @param string $secret secret used to generate the signature.
18
+ * @param int $tolerance maximum difference allowed between the header's
19
+ * timestamp and the current time
20
+ * @throws \Stripe\Error\SignatureVerification if the verification fails.
21
+ * @return bool
22
+ */
23
+ public static function verifyHeader($payload, $header, $secret, $tolerance = null)
24
+ {
25
+ // Extract timestamp and signatures from header
26
+ $timestamp = self::getTimestamp($header);
27
+ $signatures = self::getSignatures($header, self::EXPECTED_SCHEME);
28
+ if ($timestamp == -1) {
29
+ throw new Error\SignatureVerification(
30
+ "Unable to extract timestamp and signatures from header",
31
+ $header,
32
+ $payload
33
+ );
34
+ }
35
+ if (empty($signatures)) {
36
+ throw new Error\SignatureVerification(
37
+ "No signatures found with expected scheme",
38
+ $header,
39
+ $payload
40
+ );
41
+ }
42
+
43
+ // Check if expected signature is found in list of signatures from
44
+ // header
45
+ $signedPayload = "$timestamp.$payload";
46
+ $expectedSignature = self::computeSignature($signedPayload, $secret);
47
+ $signatureFound = false;
48
+ foreach ($signatures as $signature) {
49
+ if (Util\Util::secureCompare($expectedSignature, $signature)) {
50
+ $signatureFound = true;
51
+ break;
52
+ }
53
+ }
54
+ if (!$signatureFound) {
55
+ throw new Error\SignatureVerification(
56
+ "No signatures found matching the expected signature for payload",
57
+ $header,
58
+ $payload
59
+ );
60
+ }
61
+
62
+ // Check if timestamp is within tolerance
63
+ if (($tolerance > 0) && (abs(time() - $timestamp) > $tolerance)) {
64
+ throw new Error\SignatureVerification(
65
+ "Timestamp outside the tolerance zone",
66
+ $header,
67
+ $payload
68
+ );
69
+ }
70
+
71
+ return true;
72
+ }
73
+
74
+ /**
75
+ * Extracts the timestamp in a signature header.
76
+ *
77
+ * @param string $header the signature header
78
+ * @return int the timestamp contained in the header, or -1 if no valid
79
+ * timestamp is found
80
+ */
81
+ private static function getTimestamp($header)
82
+ {
83
+ $items = explode(",", $header);
84
+
85
+ foreach ($items as $item) {
86
+ $itemParts = explode("=", $item, 2);
87
+ if ($itemParts[0] == "t") {
88
+ if (!is_numeric($itemParts[1])) {
89
+ return -1;
90
+ }
91
+ return intval($itemParts[1]);
92
+ }
93
+ }
94
+
95
+ return -1;
96
+ }
97
+
98
+ /**
99
+ * Extracts the signatures matching a given scheme in a signature header.
100
+ *
101
+ * @param string $header the signature header
102
+ * @param string $scheme the signature scheme to look for.
103
+ * @return array the list of signatures matching the provided scheme.
104
+ */
105
+ private static function getSignatures($header, $scheme)
106
+ {
107
+ $signatures = [];
108
+ $items = explode(",", $header);
109
+
110
+ foreach ($items as $item) {
111
+ $itemParts = explode("=", $item, 2);
112
+ if ($itemParts[0] == $scheme) {
113
+ array_push($signatures, $itemParts[1]);
114
+ }
115
+ }
116
+
117
+ return $signatures;
118
+ }
119
+
120
+ /**
121
+ * Computes the signature for a given payload and secret.
122
+ *
123
+ * The current scheme used by Stripe ("v1") is HMAC/SHA-256.
124
+ *
125
+ * @param string $payload the payload to sign.
126
+ * @param string $secret the secret used to generate the signature.
127
+ * @return string the signature as a string.
128
+ */
129
+ private static function computeSignature($payload, $secret)
130
+ {
131
+ return hash_hmac("sha256", $payload, $secret);
132
+ }
133
+ }
app/features/events.php CHANGED
@@ -1530,7 +1530,7 @@ class MEC_feature_events extends MEC_base
1530
  }
1531
  ?>
1532
  type="checkbox" value="1" name="mec[booking][bookings_user_limit_unlimited]" onchange="javascript: $(this).parent().parent().find('input[type=text]').toggle().val('');"/>
1533
- <?php _e('Unlimited', 'modern-events-calendar-lite'); ?>
1534
  </label>
1535
  <input class="mec-col-4 <?php echo ($bookings_user_limit_unlimited == 1) ? 'mec-util-hidden' : ''; ?>" type="text" name="mec[booking][bookings_user_limit]" id="mec_bookings_user_limit"
1536
  value="<?php echo esc_attr($bookings_user_limit); ?>" placeholder="<?php _e('12', 'modern-events-calendar-lite'); ?>"/>
@@ -2441,6 +2441,21 @@ class MEC_feature_events extends MEC_base
2441
  // Get Modern Events Calendar Data
2442
  $_mec = isset($_POST['mec']) ? $_POST['mec'] : array();
2443
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2444
  // Remove Cached Data
2445
  wp_cache_delete($post_id, 'mec-events-data');
2446
 
@@ -2483,7 +2498,6 @@ class MEC_feature_events extends MEC_base
2483
  // Date Options
2484
  $date = isset($_mec['date']) ? $_mec['date'] : array();
2485
 
2486
- $start_date = (isset($date['start']) and trim($date['start']['date'])) ? $date['start']['date'] : date('Y-m-d');
2487
  $start_date = date('Y-m-d', strtotime($start_date));
2488
 
2489
  // Set the date if it's empty
@@ -2495,7 +2509,6 @@ class MEC_feature_events extends MEC_base
2495
  $start_time_minutes = isset($date['start']) ? $date['start']['minutes'] : '00';
2496
  $start_time_ampm = (isset($date['start']) and isset($date['start']['ampm'])) ? $date['start']['ampm'] : 'AM';
2497
 
2498
- $end_date = (isset($date['end']) and trim($date['end']['date'])) ? $date['end']['date'] : date('Y-m-d');
2499
  $end_date = date('Y-m-d', strtotime($end_date));
2500
 
2501
  // Fix end_date if it's smaller than start_date
@@ -2895,6 +2908,59 @@ class MEC_feature_events extends MEC_base
2895
  $op = isset($_mec['op']) ? $_mec['op'] : array();
2896
  update_post_meta($post_id, 'mec_op', $op);
2897
  update_user_meta(get_post_field('post_author', $post_id), 'mec_op', $op);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2898
  }
2899
 
2900
  /**
1530
  }
1531
  ?>
1532
  type="checkbox" value="1" name="mec[booking][bookings_user_limit_unlimited]" onchange="javascript: $(this).parent().parent().find('input[type=text]').toggle().val('');"/>
1533
+ <?php _e('Inherit from global options', 'modern-events-calendar-lite'); ?>
1534
  </label>
1535
  <input class="mec-col-4 <?php echo ($bookings_user_limit_unlimited == 1) ? 'mec-util-hidden' : ''; ?>" type="text" name="mec[booking][bookings_user_limit]" id="mec_bookings_user_limit"
1536
  value="<?php echo esc_attr($bookings_user_limit); ?>" placeholder="<?php _e('12', 'modern-events-calendar-lite'); ?>"/>
2441
  // Get Modern Events Calendar Data
2442
  $_mec = isset($_POST['mec']) ? $_POST['mec'] : array();
2443
 
2444
+ $start_date = (isset($_mec['date']['start']['date']) and trim($_mec['date']['start']['date'])) ? $_mec['date']['start']['date'] : date('Y-m-d');
2445
+ $end_date = (isset($_mec['date']['end']['date']) and trim($_mec['date']['end']['date'])) ? $_mec['date']['end']['date'] : date('Y-m-d');
2446
+
2447
+ $event = $this->db->select("SELECT * FROM `#__mec_events` WHERE `post_id` = {$post_id}", 'loadAssoc');
2448
+ if(!is_array($event)) $event = array();
2449
+
2450
+ $booking_date_update = false;
2451
+ if(count($event))
2452
+ {
2453
+ $past_start_date = (isset($event['start']) and trim($event['start'])) ? $event['start'] : '';
2454
+ $past_end_date = (isset($event['end']) and trim($event['end'])) ? $event['end'] : '';
2455
+
2456
+ if(trim($start_date) != trim($past_start_date) or trim($end_date) != trim($past_end_date)) $booking_date_update = true;
2457
+ }
2458
+
2459
  // Remove Cached Data
2460
  wp_cache_delete($post_id, 'mec-events-data');
2461
 
2498
  // Date Options
2499
  $date = isset($_mec['date']) ? $_mec['date'] : array();
2500
 
 
2501
  $start_date = date('Y-m-d', strtotime($start_date));
2502
 
2503
  // Set the date if it's empty
2509
  $start_time_minutes = isset($date['start']) ? $date['start']['minutes'] : '00';
2510
  $start_time_ampm = (isset($date['start']) and isset($date['start']['ampm'])) ? $date['start']['ampm'] : 'AM';
2511
 
 
2512
  $end_date = date('Y-m-d', strtotime($end_date));
2513
 
2514
  // Fix end_date if it's smaller than start_date
2908
  $op = isset($_mec['op']) ? $_mec['op'] : array();
2909
  update_post_meta($post_id, 'mec_op', $op);
2910
  update_user_meta(get_post_field('post_author', $post_id), 'mec_op', $op);
2911
+
2912
+ if($booking_date_update)
2913
+ {
2914
+ $render_date = $past_start_date . ':' . $past_end_date;
2915
+ $new_date = $start_date . ':' . $end_date;
2916
+
2917
+ $books_query = new WP_Query(array(
2918
+ 'post_type' => 'mec-books',
2919
+ 'nopaging' => true,
2920
+ 'post_status' => array('publish','pending','draft','future','private'),
2921
+ 'meta_query' => array(
2922
+ 'relation' => 'AND',
2923
+ array(
2924
+ 'key' => 'mec_event_id',
2925
+ 'value' => $post_id.'',
2926
+ 'type' => 'numeric',
2927
+ 'compare' => '='
2928
+ ),
2929
+ array(
2930
+ 'key' => 'mec_date',
2931
+ 'value' => $render_date,
2932
+ 'compare' => '=',
2933
+ )
2934
+ )
2935
+ ));
2936
+
2937
+ if($books_query->have_posts())
2938
+ {
2939
+ $book = $this->getBook();
2940
+
2941
+ while($books_query->have_posts())
2942
+ {
2943
+ $books_query->the_post();
2944
+ $booking_id = get_the_ID();
2945
+
2946
+ // Update Booking
2947
+ update_post_meta($booking_id, 'mec_date', trim($new_date));
2948
+ wp_update_post(array(
2949
+ 'ID' => $booking_id,
2950
+ 'post_date' => $start_date
2951
+ ));
2952
+
2953
+ // Update Transaction
2954
+ $transaction_id = get_post_meta($booking_id, 'mec_transaction_id', true);
2955
+ $transaction = $book->get_transaction($transaction_id);
2956
+
2957
+ $transaction['date'] = trim($new_date);
2958
+ $book->update_transaction($transaction_id, $transaction);
2959
+ }
2960
+
2961
+ wp_reset_postdata();
2962
+ }
2963
+ }
2964
  }
2965
 
2966
  /**
app/features/fes.php CHANGED
@@ -252,8 +252,24 @@ class MEC_feature_fes extends MEC_base
252
  $g_recaptcha_response = isset($_POST['g-recaptcha-response']) ? sanitize_text_field($_POST['g-recaptcha-response']) : NULL;
253
  if(!$this->main->get_recaptcha_response($g_recaptcha_response)) $this->main->response(array('success'=>0, 'message'=>__('Captcha is invalid! Please try again.', 'modern-events-calendar-lite'), 'code'=>'CAPTCHA_IS_INVALID'));
254
  }
255
-
256
  $post_id = isset($mec['post_id']) ? sanitize_text_field($mec['post_id']) : -1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  $post_title = isset($mec['title']) ? sanitize_text_field($mec['title']) : '';
258
  $post_content = isset($mec['content']) ? $mec['content'] : '';
259
  $post_tags = isset($mec['tags']) ? sanitize_text_field($mec['tags']) : '';
@@ -448,8 +464,7 @@ class MEC_feature_fes extends MEC_base
448
 
449
  // Date Options
450
  $date = isset($mec['date']) ? $mec['date'] : array();
451
-
452
- $start_date = (isset($date['start']) and trim($date['start']['date'])) ? $date['start']['date'] : date('Y-m-d');
453
  $start_date = date('Y-m-d', strtotime($start_date));
454
 
455
  // Set the date if it's empty
@@ -458,8 +473,7 @@ class MEC_feature_fes extends MEC_base
458
  $start_time_hour = isset($date['start']) ? $date['start']['hour'] : '8';
459
  $start_time_minutes = isset($date['start']) ? $date['start']['minutes'] : '00';
460
  $start_time_ampm = (isset($date['start']) and isset($date['start']['ampm'])) ? $date['start']['ampm'] : 'AM';
461
-
462
- $end_date = (isset($date['end']) and trim($date['end']['date'])) ? $date['end']['date'] : date('Y-m-d');
463
  $end_date = date('Y-m-d', strtotime($end_date));
464
 
465
  // Fix end_date if it's smaller than start_date
@@ -821,6 +835,59 @@ class MEC_feature_fes extends MEC_base
821
  update_post_meta($post_id, 'mec_op', $op);
822
  update_user_meta(get_post_field('post_author', $post_id), 'mec_op', $op);
823
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
824
  $message = '';
825
  if($status == 'pending') $message = __('The event submitted. It will publish as soon as possible.', 'modern-events-calendar-lite');
826
  elseif($status == 'publish') $message = __('The event published.', 'modern-events-calendar-lite');
252
  $g_recaptcha_response = isset($_POST['g-recaptcha-response']) ? sanitize_text_field($_POST['g-recaptcha-response']) : NULL;
253
  if(!$this->main->get_recaptcha_response($g_recaptcha_response)) $this->main->response(array('success'=>0, 'message'=>__('Captcha is invalid! Please try again.', 'modern-events-calendar-lite'), 'code'=>'CAPTCHA_IS_INVALID'));
254
  }
255
+
256
  $post_id = isset($mec['post_id']) ? sanitize_text_field($mec['post_id']) : -1;
257
+
258
+ $start_date = (isset($mec['date']['start']['date']) and trim($mec['date']['start']['date'])) ? $mec['date']['start']['date'] : date('Y-m-d');
259
+ $end_date = (isset($mec['date']['end']['date']) and trim($mec['date']['end']['date'])) ? $mec['date']['end']['date'] : date('Y-m-d');
260
+
261
+ $event = $this->db->select("SELECT * FROM `#__mec_events` WHERE `post_id` = {$post_id}", 'loadAssoc');
262
+ if(!is_array($event)) $event = array();
263
+
264
+ $booking_date_update = false;
265
+ if(count($event))
266
+ {
267
+ $past_start_date = (isset($event['start']) and trim($event['start'])) ? $event['start'] : '';
268
+ $past_end_date = (isset($event['end']) and trim($event['end'])) ? $event['end'] : '';
269
+
270
+ if(trim($start_date) != trim($past_start_date) or trim($end_date) != trim($past_end_date)) $booking_date_update = true;
271
+ }
272
+
273
  $post_title = isset($mec['title']) ? sanitize_text_field($mec['title']) : '';
274
  $post_content = isset($mec['content']) ? $mec['content'] : '';
275
  $post_tags = isset($mec['tags']) ? sanitize_text_field($mec['tags']) : '';
464
 
465
  // Date Options
466
  $date = isset($mec['date']) ? $mec['date'] : array();
467
+
 
468
  $start_date = date('Y-m-d', strtotime($start_date));
469
 
470
  // Set the date if it's empty
473
  $start_time_hour = isset($date['start']) ? $date['start']['hour'] : '8';
474
  $start_time_minutes = isset($date['start']) ? $date['start']['minutes'] : '00';
475
  $start_time_ampm = (isset($date['start']) and isset($date['start']['ampm'])) ? $date['start']['ampm'] : 'AM';
476
+
 
477
  $end_date = date('Y-m-d', strtotime($end_date));
478
 
479
  // Fix end_date if it's smaller than start_date
835
  update_post_meta($post_id, 'mec_op', $op);
836
  update_user_meta(get_post_field('post_author', $post_id), 'mec_op', $op);
837
 
838
+ if($booking_date_update)
839
+ {
840
+ $render_date = $past_start_date . ':' . $past_end_date;
841
+ $new_date = $start_date . ':' . $end_date;
842
+
843
+ $books_query = new WP_Query(array(
844
+ 'post_type' => 'mec-books',
845
+ 'nopaging' => true,
846
+ 'post_status' => array('publish','pending','draft','future','private'),
847
+ 'meta_query' => array(
848
+ 'relation' => 'AND',
849
+ array(
850
+ 'key' => 'mec_event_id',
851
+ 'value' => $post_id.'',
852
+ 'type' => 'numeric',
853
+ 'compare' => '='
854
+ ),
855
+ array(
856
+ 'key' => 'mec_date',
857
+ 'value' => $render_date,
858
+ 'compare' => '=',
859
+ )
860
+ )
861
+ ));
862
+
863
+ if($books_query->have_posts())
864
+ {
865
+ $book = $this->getBook();
866
+
867
+ while($books_query->have_posts())
868
+ {
869
+ $books_query->the_post();
870
+ $booking_id = get_the_ID();
871
+
872
+ // Update Booking
873
+ update_post_meta($booking_id, 'mec_date', trim($new_date));
874
+ wp_update_post(array(
875
+ 'ID' => $booking_id,
876
+ 'post_date' => $start_date
877
+ ));
878
+
879
+ // Update Transaction
880
+ $transaction_id = get_post_meta($booking_id, 'mec_transaction_id', true);
881
+ $transaction = $book->get_transaction($transaction_id);
882
+
883
+ $transaction['date'] = trim($new_date);
884
+ $book->update_transaction($transaction_id, $transaction);
885
+ }
886
+
887
+ wp_reset_postdata();
888
+ }
889
+ }
890
+
891
  $message = '';
892
  if($status == 'pending') $message = __('The event submitted. It will publish as soon as possible.', 'modern-events-calendar-lite');
893
  elseif($status == 'publish') $message = __('The event published.', 'modern-events-calendar-lite');
app/features/login.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /** no direct access **/
3
+ defined('MECEXEC') or die();
4
+
5
+ /**
6
+ * @author Webnus <info@webnus.biz>
7
+ */
8
+ class MEC_feature_login extends MEC_base
9
+ {
10
+
11
+ public $factory;
12
+ public $main;
13
+ public $settings;
14
+
15
+ /**
16
+ * Constructor method
17
+ * @author Webnus <info@webnus.biz>
18
+ */
19
+ public function __construct()
20
+ {
21
+ // Import MEC Factory
22
+ $this->factory = $this->getFactory();
23
+
24
+ // Import MEC Main
25
+ $this->main = $this->getMain();
26
+
27
+ // MEC Settings
28
+ $this->settings = $this->main->get_settings();
29
+
30
+ }
31
+
32
+ /**
33
+ * Initialize search feature
34
+ * @author Webnus <info@webnus.biz>
35
+ */
36
+ public function init()
37
+ {
38
+ // login form shortcode
39
+ $this->factory->shortcode('MEC_login', array($this, 'login'));
40
+
41
+ $this->factory->action('wp_ajax_mec_ajax_login_data', array($this, 'mec_ajax_login_data'));
42
+ $this->factory->action('wp_ajax_nopriv_mec_ajax_login_data', array($this, 'mec_ajax_login_data'));
43
+ }
44
+
45
+ public function mec_ajax_login_data()
46
+ {
47
+
48
+ // Check if our nonce is set.
49
+ if(!isset($_POST['mec_login_nonce'])) return;
50
+
51
+ // Verify that the nonce is valid.
52
+ if(!wp_verify_nonce(sanitize_text_field($_POST['mec_login_nonce']), 'mec-ajax-login-nonce')) return;
53
+
54
+ $info = array();
55
+ $info['user_login'] = $_POST['username'];
56
+ $info['user_password'] = $_POST['password'];
57
+ $info['remember'] = true;
58
+
59
+ $user_signon = wp_signon( $info, false );
60
+ if ( is_wp_error($user_signon) ){
61
+ echo json_encode(array('loggedin'=>false, 'message'=>__('Wrong username or password.')));
62
+ } else {
63
+ echo json_encode(array('loggedin'=>true, 'message'=>__('Login successful, redirecting...')));
64
+ }
65
+
66
+ die();
67
+ }
68
+
69
+ /**
70
+ * Show user login form
71
+ * @return string
72
+ */
73
+ public function login()
74
+ {
75
+ $path = MEC::import('app.features.login.login', true, true);
76
+
77
+ ob_start();
78
+ include $path;
79
+ return ob_get_clean();
80
+ }
81
+ }
app/features/login/index.html ADDED
File without changes
app/features/login/login.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="mec-login-form">
2
+ <div class="mec-login-input">
3
+ <label>
4
+ <i class="mec-sl-user"></i>
5
+ <input name="email" id="email" type="text" />
6
+ </label>
7
+ </div>
8
+ <div class="mec-login-input">
9
+ <label>
10
+ <i class="mec-sl-key"></i>
11
+ <input name="password" id="password" type="password" />
12
+ </label>
13
+ </div>
14
+ <div class="mec-login-form-footer">
15
+ <div class="mec-login-forgotpassword">
16
+ <a class="mec-color-hover" href="<?php echo wp_lostpassword_url(); ?>">Forgot Password?</a>
17
+ </div>
18
+ <div class="mec-login-submit">
19
+ <button class="mec-bg-color">Login</button>
20
+ </div>
21
+ </div>
22
+ <?php wp_nonce_field( 'mec-ajax-login-nonce', 'mec_login_nonce' ); ?>
23
+
24
+ </div>
25
+
26
+ <script type="text/javascript">
27
+
28
+ jQuery(".mec-login-form-footer button").click(function (e) {
29
+ e.preventDefault();
30
+ var mec_email = jQuery(".mec-login-form #email").val(),
31
+ mec_pass = jQuery(".mec-login-form #password").val(),
32
+ mec_nonce = jQuery(".mec-login-form #mec_login_nonce").val();
33
+
34
+ jQuery.ajax({
35
+ url: '<?php echo admin_url('admin-ajax.php'); ?>',
36
+ type: 'post',
37
+ data: {
38
+ action: 'mec_ajax_login_data',
39
+ username: mec_email,
40
+ password : mec_pass,
41
+ mec_login_nonce : mec_nonce,
42
+ },
43
+ beforeSend: function(msg){
44
+ jQuery(".mec-login-form").append("<div class=\"mec-ajax-login-loading\"><div class=\"lds-ripple\"><div></div><div></div></div></div>");
45
+ },
46
+ success: function(data) {
47
+ var message = jQuery.parseJSON(data);
48
+ jQuery(".mec-ajax-login-loading").append("<div class=\"mec-ajax-login-loading-text\"></div>");
49
+ if ( !message.loggedin ){
50
+ jQuery(".mec-ajax-login-loading .lds-ripple").remove();
51
+ jQuery(".mec-ajax-login-loading-text").addClass('error').append(message.message);
52
+ } else {
53
+ jQuery(".mec-ajax-login-loading-text").addClass('success').append(message.message);
54
+ location.reload();
55
+ }
56
+ },
57
+ });
58
+ });
59
+
60
+ </script>
app/features/mec.php CHANGED
@@ -601,8 +601,8 @@ class MEC_feature_mec extends MEC_base
601
  if($tab == 'MEC-customcss') $this->styles();
602
  elseif($tab == 'MEC-ie') $this->import_export();
603
  //elseif($tab == 'MEC-support') $this->support();
604
- elseif($tab == 'MEC-reg-form') $this->regform();
605
- elseif($tab == 'MEC-gateways') $this->gateways();
606
  elseif($tab == 'MEC-notifications') $this->notifications();
607
  elseif($tab == 'MEC-messages') $this->messages();
608
  elseif($tab == 'MEC-styling') $this->styling();
@@ -729,28 +729,28 @@ class MEC_feature_mec extends MEC_base
729
  * @author Webnus <info@webnus.biz>
730
  * @return void
731
  */
732
- public function regform()
733
- {
734
- $path = MEC::import('app.features.mec.regform', true, true);
735
 
736
- ob_start();
737
- include $path;
738
- echo $output = ob_get_clean();
739
- }
740
 
741
  /**
742
  * Show content of gateways tab
743
  * @author Webnus <info@webnus.biz>
744
  * @return void
745
  */
746
- public function gateways()
747
- {
748
- $path = MEC::import('app.features.mec.gateways', true, true);
749
 
750
- ob_start();
751
- include $path;
752
- echo $output = ob_get_clean();
753
- }
754
 
755
  /**
756
  * Show content of notifications tab
601
  if($tab == 'MEC-customcss') $this->styles();
602
  elseif($tab == 'MEC-ie') $this->import_export();
603
  //elseif($tab == 'MEC-support') $this->support();
604
+ // elseif($tab == 'MEC-reg-form') $this->regform();
605
+ // elseif($tab == 'MEC-gateways') $this->gateways();
606
  elseif($tab == 'MEC-notifications') $this->notifications();
607
  elseif($tab == 'MEC-messages') $this->messages();
608
  elseif($tab == 'MEC-styling') $this->styling();
729
  * @author Webnus <info@webnus.biz>
730
  * @return void
731
  */
732
+ // public function regform()
733
+ // {
734
+ // $path = MEC::import('app.features.mec.regform', true, true);
735
 
736
+ // ob_start();
737
+ // include $path;
738
+ // echo $output = ob_get_clean();
739
+ // }
740
 
741
  /**
742
  * Show content of gateways tab
743
  * @author Webnus <info@webnus.biz>
744
  * @return void
745
  */
746
+ // public function gateways()
747
+ // {
748
+ // $path = MEC::import('app.features.mec.gateways', true, true);
749
 
750
+ // ob_start();
751
+ // include $path;
752
+ // echo $output = ob_get_clean();
753
+ // }
754
 
755
  /**
756
  * Show content of notifications tab
app/features/mec/booking.php CHANGED
@@ -17,6 +17,51 @@ if($this->getPRO())
17
  $envato = $this->getEnvato();
18
  $verify = $envato->get_MEC_info('dl');
19
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  ?>
21
  <div class="wns-be-container wns-be-container-sticky">
22
  <div id="wns-be-infobar">
@@ -349,6 +394,158 @@ if($this->getPRO())
349
  <?php endif; ?>
350
  </div>
351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
352
  <?php endif; ?>
353
 
354
  <div class="mec-options-fields">
17
  $envato = $this->getEnvato();
18
  $verify = $envato->get_MEC_info('dl');
19
  }
20
+
21
+
22
+ // Booking form
23
+ $mec_email = false;
24
+ $mec_name = false;
25
+ $reg_fields = $this->main->get_reg_fields();
26
+ if(!is_array($reg_fields)) $reg_fields = array();
27
+
28
+ foreach($reg_fields as $field)
29
+ {
30
+ if(isset($field['type']))
31
+ {
32
+ if($field['type'] == 'name') $mec_name = true;
33
+ if($field['type'] == 'mec_email') $mec_email = true;
34
+ }
35
+ else break;
36
+ }
37
+
38
+ if(!$mec_name)
39
+ {
40
+ array_unshift(
41
+ $reg_fields,
42
+ array(
43
+ 'mandatory' => '0',
44
+ 'type' => 'name',
45
+ 'label' => esc_html__('Name', 'modern-events-calendar-lite'),
46
+ )
47
+ );
48
+ }
49
+
50
+ if(!$mec_email)
51
+ {
52
+ array_unshift(
53
+ $reg_fields,
54
+ array(
55
+ 'mandatory' => '0',
56
+ 'type' => 'mec_email',
57
+ 'label' => esc_html__('Email', 'modern-events-calendar-lite'),
58
+ )
59
+ );
60
+ }
61
+
62
+ // gateways
63
+ $gateways = $this->main->get_gateways();
64
+ $gateways_options = $this->main->get_gateways_options();
65
  ?>
66
  <div class="wns-be-container wns-be-container-sticky">
67
  <div id="wns-be-infobar">
394
  <?php endif; ?>
395
  </div>
396
 
397
+ <div id="booking_form_option" class="mec-options-fields">
398
+ <h4 class="mec-form-subtitle"><?php _e('Booking Form', 'modern-events-calendar-lite'); ?></h4>
399
+ <div class="mec-container">
400
+ <?php do_action( 'before_mec_reg_fields_form' ); ?>
401
+ <?php do_action( 'mec_reg_fields_form_start' ); ?>
402
+ <div class="mec-form-row" id="mec_reg_form_container">
403
+ <?php /** Don't remove this hidden field **/ ?>
404
+ <input type="hidden" name="mec[reg_fields]" value="" />
405
+
406
+ <ul id="mec_reg_form_fields">
407
+ <?php
408
+ $i = 0;
409
+ foreach ( $reg_fields as $key => $reg_field ) {
410
+ if ( ! is_numeric( $key ) ) {
411
+ continue;
412
+ }
413
+ $i = max( $i, $key );
414
+
415
+ if ( $reg_field['type'] == 'text' ) {
416
+ echo $this->main->field_text( $key, $reg_field );
417
+ } elseif ( $reg_field['type'] == 'name' ) {
418
+ echo $this->main->field_name( $key, $reg_field );
419
+ } elseif ( $reg_field['type'] == 'mec_email' ) {
420
+ echo $this->main->field_mec_email( $key, $reg_field );
421
+ } elseif ( $reg_field['type'] == 'email' ) {
422
+ echo $this->main->field_email( $key, $reg_field );
423
+ } elseif ( $reg_field['type'] == 'date' ) {
424
+ echo $this->main->field_date( $key, $reg_field );
425
+ } elseif ( $reg_field['type'] == 'file' ) {
426
+ echo $this->main->field_file( $key, $reg_field );
427
+ } elseif ( $reg_field['type'] == 'tel' ) {
428
+ echo $this->main->field_tel( $key, $reg_field );
429
+ } elseif ( $reg_field['type'] == 'textarea' ) {
430
+ echo $this->main->field_textarea( $key, $reg_field );
431
+ } elseif ( $reg_field['type'] == 'p' ) {
432
+ echo $this->main->field_p( $key, $reg_field );
433
+ } elseif ( $reg_field['type'] == 'checkbox' ) {
434
+ echo $this->main->field_checkbox( $key, $reg_field );
435
+ } elseif ( $reg_field['type'] == 'radio' ) {
436
+ echo $this->main->field_radio( $key, $reg_field );
437
+ } elseif ( $reg_field['type'] == 'select' ) {
438
+ echo $this->main->field_select( $key, $reg_field );
439
+ } elseif ( $reg_field['type'] == 'agreement' ) {
440
+ echo $this->main->field_agreement( $key, $reg_field );
441
+ }
442
+ }
443
+ ?>
444
+ </ul>
445
+ <div id="mec_reg_form_field_types">
446
+ <button type="button" class="button red" data-type="name"><?php _e( 'MEC Name', 'modern-events-calendar-lite' ); ?></button>
447
+ <button type="button" class="button red" data-type="mec_email"><?php _e( 'MEC Email', 'modern-events-calendar-lite' ); ?></button>
448
+ <button type="button" class="button" data-type="text"><?php _e( 'Text', 'modern-events-calendar-lite' ); ?></button>
449
+ <button type="button" class="button" data-type="email"><?php _e( 'Email', 'modern-events-calendar-lite' ); ?></button>
450
+ <button type="button" class="button" data-type="date"><?php _e( 'Date', 'modern-events-calendar-lite' ); ?></button>
451
+ <button type="button" class="button" data-type="tel"><?php _e( 'Tel', 'modern-events-calendar-lite' ); ?></button>
452
+ <button type="button" class="button" data-type="file"><?php _e( 'File', 'modern-events-calendar-lite' ); ?></button>
453
+ <button type="button" class="button" data-type="textarea"><?php _e( 'Textarea', 'modern-events-calendar-lite' ); ?></button>
454
+ <button type="button" class="button" data-type="checkbox"><?php _e( 'Checkboxes', 'modern-events-calendar-lite' ); ?></button>
455
+ <button type="button" class="button" data-type="radio"><?php _e( 'Radio Buttons', 'modern-events-calendar-lite' ); ?></button>
456
+ <button type="button" class="button" data-type="select"><?php _e( 'Dropdown', 'modern-events-calendar-lite' ); ?></button>
457
+ <button type="button" class="button" data-type="agreement"><?php _e( 'Agreement', 'modern-events-calendar-lite' ); ?></button>
458
+ <button type="button" class="button" data-type="p"><?php _e( 'Paragraph', 'modern-events-calendar-lite' ); ?></button>
459
+ </div>
460
+ <?php do_action( 'mec_reg_fields_form_end' ); ?>
461
+ </div>
462
+ <div class="mec-form-row">
463
+ <?php wp_nonce_field( 'mec_options_form' ); ?>
464
+ <button style="display: none;" id="mec_reg_fields_form_button" class="button button-primary mec-button-primary" type="submit"><?php _e( 'Save Changes', 'modern-events-calendar-lite' ); ?></button>
465
+ </div>
466
+ <?php do_action( 'after_mec_reg_fields_form' ); ?>
467
+ </div>
468
+ <input type="hidden" id="mec_new_reg_field_key" value="<?php echo $i + 1; ?>" />
469
+ <div class="mec-util-hidden">
470
+ <div id="mec_reg_field_text">
471
+ <?php echo $this->main->field_text( ':i:' ); ?>
472
+ </div>
473
+ <div id="mec_reg_field_email">
474
+ <?php echo $this->main->field_email( ':i:' ); ?>
475
+ </div>
476
+ <div id="mec_reg_field_mec_email">
477
+ <?php echo $this->main->field_mec_email( ':i:' ); ?>
478
+ </div>
479
+ <div id="mec_reg_field_name">
480
+ <?php echo $this->main->field_name( ':i:' ); ?>
481
+ </div>
482
+ <div id="mec_reg_field_tel">
483
+ <?php echo $this->main->field_tel( ':i:' ); ?>
484
+ </div>
485
+ <div id="mec_reg_field_date">
486
+ <?php echo $this->main->field_date( ':i:' ); ?>
487
+ </div>
488
+ <div id="mec_reg_field_file">
489
+ <?php echo $this->main->field_file( ':i:' ); ?>
490
+ </div>
491
+ <div id="mec_reg_field_textarea">
492
+ <?php echo $this->main->field_textarea( ':i:' ); ?>
493
+ </div>
494
+ <div id="mec_reg_field_checkbox">
495
+ <?php echo $this->main->field_checkbox( ':i:' ); ?>
496
+ </div>
497
+ <div id="mec_reg_field_radio">
498
+ <?php echo $this->main->field_radio( ':i:' ); ?>
499
+ </div>
500
+ <div id="mec_reg_field_select">
501
+ <?php echo $this->main->field_select( ':i:' ); ?>
502
+ </div>
503
+ <div id="mec_reg_field_agreement">
504
+ <?php echo $this->main->field_agreement( ':i:' ); ?>
505
+ </div>
506
+ <div id="mec_reg_field_p">
507
+ <?php echo $this->main->field_p( ':i:' ); ?>
508
+ </div>
509
+ <div id="mec_reg_field_option">
510
+ <?php echo $this->main->field_option( ':fi:', ':i:' ); ?>
511
+ </div>
512
+ </div>
513
+ </div>
514
+
515
+ <div id="payment_gateways_option" class="mec-options-fields">
516
+ <h4 class="mec-form-subtitle"><?php _e('Payment Gateways', 'modern-events-calendar-lite'); ?></h4>
517
+ <div class="mec-container">
518
+ <div class="mec-form-row" id="mec_gateways_form_container">
519
+ <ul>
520
+ <?php foreach($gateways as $gateway): ?>
521
+ <li id="mec_gateway_id<?php echo $gateway->id(); ?>">
522
+ <?php $gateway->options_form(); ?>
523
+ </li>
524
+ <?php endforeach; ?>
525
+ </ul>
526
+ </div>
527
+ <div class="mec-form-row" style="margin-top: 30px;">
528
+ <div class="mec-col-4">
529
+ <label>
530
+ <input type="hidden" name="mec[gateways][op_status]" value="0" />
531
+ <input id="mec_gateways_op_status" value="1" type="checkbox" name="mec[gateways][op_status]" <?php if(isset($gateways_options['op_status']) and $gateways_options['op_status']) echo 'checked="checked"'; ?> /> <?php _e('Enable Organizer Payment Module', 'modern-events-calendar-lite'); ?>
532
+ </label>
533
+ <span class="mec-tooltip">
534
+ <div class="box">
535
+ <h5 class="title"><?php _e('Organizer Payment', 'modern-events-calendar-lite'); ?></h5>
536
+ <div class="content"><p><?php esc_attr_e("By enabling this module, organizers are able to insert their own payment credentials for enabled gateways per event and receive the payments directly!", 'modern-events-calendar-lite'); ?></p></div>
537
+ </div>
538
+ <i title="" class="dashicons-before dashicons-editor-help"></i>
539
+ </span>
540
+ </div>
541
+ </div>
542
+ <div class="mec-form-row">
543
+ <?php wp_nonce_field('mec_options_form'); ?>
544
+ <button style="display: none;" id="mec_gateways_form_button" class="button button-primary mec-button-primary" type="submit"><?php _e('Save Changes', 'modern-events-calendar-lite'); ?></button>
545
+ </div>
546
+ </div>
547
+ </div>
548
+
549
  <?php endif; ?>
550
 
551
  <div class="mec-options-fields">
app/features/mec/gateways.php CHANGED
@@ -1,120 +1,4 @@
1
  <?php
2
  /** no direct access **/
3
  defined('MECEXEC') or die();
4
-
5
- $gateways = $this->main->get_gateways();
6
- $gateways_options = $this->main->get_gateways_options();
7
- ?>
8
- <div class="wns-be-container wns-be-container-sticky">
9
-
10
- <div id="wns-be-infobar">
11
- <a href="" id="" class="dpr-btn dpr-save-btn"><?php _e('Save Changes', 'modern-events-calendar-lite'); ?></a>
12
- </div>
13
-
14
- <div class="wns-be-sidebar">
15
- <?php $this->main->get_sidebar_menu('gateways'); ?>
16
- </div>
17
-
18
- <div class="wns-be-main">
19
-
20
- <div id="wns-be-notification"></div>
21
-
22
- <div id="wns-be-content">
23
- <div class="wns-be-group-tab">
24
- <h2><?php _e('Payment Gateways', 'modern-events-calendar-lite'); ?></h2>
25
- <div class="mec-container">
26
- <form id="mec_gateways_form">
27
- <div class="mec-form-row" id="mec_gateways_form_container">
28
- <ul>
29
- <?php foreach($gateways as $gateway): ?>
30
- <li id="mec_gateway_id<?php echo $gateway->id(); ?>">
31
- <?php $gateway->options_form(); ?>
32
- </li>
33
- <?php endforeach; ?>
34
- </ul>
35
- </div>
36
- <div class="mec-form-row" style="margin-top: 30px;">
37
- <div class="mec-col-4">
38
- <label>
39
- <input type="hidden" name="mec[gateways][op_status]" value="0" />
40
- <input id="mec_gateways_op_status" value="1" type="checkbox" name="mec[gateways][op_status]" <?php if(isset($gateways_options['op_status']) and $gateways_options['op_status']) echo 'checked="checked"'; ?> /> <?php _e('Enable Organizer Payment Module', 'modern-events-calendar-lite'); ?>
41
- </label>
42
- <span class="mec-tooltip">
43
- <div class="box">
44
- <h5 class="title"><?php _e('Organizer Payment', 'modern-events-calendar-lite'); ?></h5>
45
- <div class="content"><p><?php esc_attr_e("By enabling this module, organizers are able to insert their own payment credentials for enabled gateways per event and receive the payments directly!", 'modern-events-calendar-lite'); ?></p></div>
46
- </div>
47
- <i title="" class="dashicons-before dashicons-editor-help"></i>
48
- </span>
49
- </div>
50
- </div>
51
- <div class="mec-form-row">
52
- <?php wp_nonce_field('mec_options_form'); ?>
53
- <button style="display: none;" id="mec_gateways_form_button" class="button button-primary mec-button-primary" type="submit"><?php _e('Save Changes', 'modern-events-calendar-lite'); ?></button>
54
- </div>
55
- </form>
56
- </div>
57
- </div>
58
- </div>
59
- </div>
60
-
61
- <div id="wns-be-footer">
62
- <a href="" id="" class="dpr-btn dpr-save-btn"><?php _e('Save Changes', 'modern-events-calendar-lite'); ?></a>
63
- </div>
64
-
65
- </div>
66
-
67
- <script type="text/javascript">
68
- jQuery(document).ready(function()
69
- {
70
- jQuery(".dpr-save-btn").on('click', function(event)
71
- {
72
- event.preventDefault();
73
- jQuery("#mec_gateways_form_button").trigger('click');
74
- });
75
- });
76
-
77
- jQuery("#mec_gateways_form").on('submit', function(event)
78
- {
79
- event.preventDefault();
80
-
81
- // Add loading Class to the button
82
- jQuery(".dpr-save-btn").addClass('loading').text("<?php echo esc_js(esc_attr__('Saved', 'modern-events-calendar-lite')); ?>");
83
- jQuery('<div class="wns-saved-settings"><?php echo esc_js(esc_attr__('Settings Saved!', 'modern-events-calendar-lite')); ?></div>').insertBefore('#wns-be-content');
84
-
85
- if(jQuery('#wns-be-infobar').hasClass('sticky'))
86
- {
87
- jQuery('.wns-saved-settings').addClass('sticky');
88
- }
89
-
90
- var gateways = jQuery("#mec_gateways_form").serialize();
91
- jQuery.ajax(
92
- {
93
- type: "POST",
94
- url: ajaxurl,
95
- data: "action=mec_save_gateways&"+gateways,
96
- beforeSend: function () {
97
- jQuery('.wns-be-main').append('<div class="mec-loarder-wrap mec-settings-loader"><div class="mec-loarder"><div></div><div></div><div></div></div></div>');
98
- },
99
- success: function(data)
100
- {
101
- // Remove the loading Class to the button
102
- setTimeout(function(){
103
- jQuery(".dpr-save-btn").removeClass('loading').text("<?php echo esc_js(esc_attr__('Save Changes', 'modern-events-calendar-lite')); ?>");
104
- jQuery('.wns-saved-settings').remove();
105
- jQuery('.mec-loarder-wrap').remove();
106
- }, 1000);
107
-
108
- },
109
- error: function(jqXHR, textStatus, errorThrown)
110
- {
111
- // Remove the loading Class to the button
112
- setTimeout(function(){
113
- jQuery(".dpr-save-btn").removeClass('loading').text("<?php echo esc_js(esc_attr__('Save Changes', 'modern-events-calendar-lite')); ?>");
114
- jQuery('.wns-saved-settings').remove();
115
- jQuery('.mec-loarder-wrap').remove();
116
- }, 1000);
117
- }
118
- });
119
- });
120
- </script>
1
  <?php
2
  /** no direct access **/
3
  defined('MECEXEC') or die();
4
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/features/mec/meta_boxes/display_options.php CHANGED
@@ -16,9 +16,11 @@ $events = $this->main->get_events();
16
  <div class="mec-meta-box-fields" id="mec_meta_box_calendar_skin_options">
17
  <div class="mec-form-row">
18
  <label class="mec-col-4" for="mec_skin"><?php _e('Skin', 'modern-events-calendar-lite'); ?></label>
19
- <select class="mec-col-4" name="mec[skin]" id="mec_skin" onchange="if( jQuery('#mec_skin').val() != 'carousel' ){ jQuery('.mec-carousel-archive-link').hide();jQuery('.mec-carousel-head-text').hide();}">
20
  <?php foreach($skins as $skin=>$name): ?>
21
- <option value="<?php echo $skin; ?>" <?php if($selected_skin == $skin) echo 'selected="selected"'; ?>><?php echo $name; ?></option>
 
 
22
  <?php endforeach; ?>
23
  </select>
24
  </div>
@@ -30,7 +32,7 @@ $events = $this->main->get_events();
30
  <?php $sk_options_list = isset($sk_options['list']) ? $sk_options['list'] : array(); ?>
31
  <div class="mec-form-row">
32
  <label class="mec-col-4" for="mec_skin_list_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
33
- <select class="mec-col-4" name="mec[sk-options][list][style]" id="mec_skin_list_style" onchange="mec_skin_style_changed('list', this.value); if(this.value == 'accordion'){ jQuery('.mec-sed-methode-container').hide();jQuery('.mec-toggle-month-divider').show(); }else{ jQuery('.mec-sed-methode-container').show();jQuery('.mec-toggle-month-divider').hide()}">
34
  <option value="classic" <?php if(isset($sk_options_list['style']) and $sk_options_list['style'] == 'classic') echo 'selected="selected"'; ?>><?php _e('Classic', 'modern-events-calendar-lite'); ?></option>
35
  <option value="minimal" <?php if(isset($sk_options_list['style']) and $sk_options_list['style'] == 'minimal') echo 'selected="selected"'; ?>><?php _e('Minimal', 'modern-events-calendar-lite'); ?></option>
36
  <option value="modern" <?php if(isset($sk_options_list['style']) and $sk_options_list['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
@@ -40,7 +42,7 @@ $events = $this->main->get_events();
40
  </div>
41
  <div class="mec-form-row">
42
  <label class="mec-col-4" for="mec_skin_list_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
43
- <select class="mec-col-4" name="mec[sk-options][list][start_date_type]" id="mec_skin_list_start_date_type" onchange="if(this.value === 'date') jQuery('#mec_skin_list_start_date_container').show(); else jQuery('#mec_skin_list_start_date_container').hide();">
44
  <option value="today" <?php if(isset($sk_options_list['start_date_type']) and $sk_options_list['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
45
  <option value="tomorrow" <?php if(isset($sk_options_list['start_date_type']) and $sk_options_list['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
46
  <option value="start_current_month" <?php if(isset($sk_options_list['start_date_type']) and $sk_options_list['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -135,6 +137,20 @@ $events = $this->main->get_events();
135
  <label for="mec_skin_list_month_divider"></label>
136
  </div>
137
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  <div class="mec-sed-methode-container">
139
  <?php echo $this->sed_method_field('list', (isset($sk_options_list['sed_method']) ? $sk_options_list['sed_method'] : 0), (isset($sk_options_list['image_popup']) ? $sk_options_list['image_popup'] : 0)); ?>
140
  </div>
@@ -155,7 +171,7 @@ $events = $this->main->get_events();
155
  <?php $sk_options_grid = isset($sk_options['grid']) ? $sk_options['grid'] : array(); ?>
156
  <div class="mec-form-row">
157
  <label class="mec-col-4" for="mec_skin_grid_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
158
- <select class="mec-col-4" name="mec[sk-options][grid][style]" id="mec_skin_grid_style" onchange="mec_skin_style_changed('grid', this.value);">
159
  <option value="classic" <?php if(isset($sk_options_grid['style']) and $sk_options_grid['style'] == 'classic') echo 'selected="selected"'; ?>><?php _e('Classic', 'modern-events-calendar-lite'); ?></option>
160
  <option value="clean" <?php if(isset($sk_options_grid['style']) and $sk_options_grid['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
161
  <option value="minimal" <?php if(isset($sk_options_grid['style']) and $sk_options_grid['style'] == 'minimal') echo 'selected="selected"'; ?>><?php _e('Minimal', 'modern-events-calendar-lite'); ?></option>
@@ -167,7 +183,7 @@ $events = $this->main->get_events();
167
  </div>
168
  <div class="mec-form-row">
169
  <label class="mec-col-4" for="mec_skin_grid_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
170
- <select class="mec-col-4" name="mec[sk-options][grid][start_date_type]" id="mec_skin_grid_start_date_type" onchange="if(this.value === 'date') jQuery('#mec_skin_grid_start_date_container').show(); else jQuery('#mec_skin_grid_start_date_container').hide();">
171
  <option value="today" <?php if(isset($sk_options_grid['start_date_type']) and $sk_options_grid['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
172
  <option value="tomorrow" <?php if(isset($sk_options_grid['start_date_type']) and $sk_options_grid['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
173
  <option value="start_current_month" <?php if(isset($sk_options_grid['start_date_type']) and $sk_options_grid['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -263,7 +279,7 @@ $events = $this->main->get_events();
263
  </div>
264
  <div class="mec-form-row">
265
  <label class="mec-col-4" for="mec_skin_grid_count"><?php _e('Count in row', 'modern-events-calendar-lite'); ?></label>
266
- <select class="mec-col-4" name="mec[sk-options][grid][count]" id="mec_skin_grid_count">
267
  <option value="1" <?php echo (isset($sk_options_grid['count']) and $sk_options_grid['count'] == 1) ? 'selected="selected"' : ''; ?>>1</option>
268
  <option value="2" <?php echo (isset($sk_options_grid['count']) and $sk_options_grid['count'] == 2) ? 'selected="selected"' : ''; ?>>2</option>
269
  <option value="3" <?php echo (isset($sk_options_grid['count']) and $sk_options_grid['count'] == 3) ? 'selected="selected"' : ''; ?>>3</option>
@@ -286,6 +302,20 @@ $events = $this->main->get_events();
286
  <label for="mec_skin_grid_load_more_button"></label>
287
  </div>
288
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  <?php echo $this->sed_method_field('grid', (isset($sk_options_grid['sed_method']) ? $sk_options_grid['sed_method'] : 0), (isset($sk_options_grid['image_popup']) ? $sk_options_grid['image_popup'] : 0)); ?>
290
  </div>
291
 
@@ -299,13 +329,13 @@ $events = $this->main->get_events();
299
  <?php $sk_options_agenda = isset($sk_options['agenda']) ? $sk_options['agenda'] : array(); ?>
300
  <div class="mec-form-row">
301
  <label class="mec-col-4" for="mec_skin_agenda_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
302
- <select class="mec-col-4" name="mec[sk-options][agenda][style]" id="mec_skin_agenda_style" onchange="mec_skin_style_changed('agenda', this.value);">
303
  <option value="clean" <?php if(isset($sk_options_agenda['style']) and $sk_options_agenda['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
304
  </select>
305
  </div>
306
  <div class="mec-form-row">
307
  <label class="mec-col-4" for="mec_skin_agenda_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
308
- <select class="mec-col-4" name="mec[sk-options][agenda][start_date_type]" id="mec_skin_agenda_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_agenda_start_date_container').show(); else jQuery('#mec_skin_agenda_start_date_container').hide();">
309
  <option value="today" <?php if(isset($sk_options_agenda['start_date_type']) and $sk_options_agenda['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
310
  <option value="tomorrow" <?php if(isset($sk_options_agenda['start_date_type']) and $sk_options_agenda['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
311
  <option value="start_current_month" <?php if(isset($sk_options_agenda['start_date_type']) and $sk_options_agenda['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -360,7 +390,7 @@ $events = $this->main->get_events();
360
  <?php $sk_options_full_calendar = isset($sk_options['full_calendar']) ? $sk_options['full_calendar'] : array(); ?>
361
  <div class="mec-form-row">
362
  <label class="mec-col-4" for="mec_skin_full_calendar_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
363
- <select class="mec-col-4" name="mec[sk-options][full_calendar][start_date_type]" id="mec_skin_full_calendar_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_full_calendar_start_date_container').show(); else jQuery('#mec_skin_full_calendar_start_date_container').hide();">
364
  <option value="start_current_month" <?php if(isset($sk_options_full_calendar['start_date_type']) and $sk_options_full_calendar['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
365
  <option value="start_next_month" <?php if(isset($sk_options_full_calendar['start_date_type']) and $sk_options_full_calendar['start_date_type'] == 'start_next_month') echo 'selected="selected"'; ?>><?php _e('Start of Next Month', 'modern-events-calendar-lite'); ?></option>
366
  <option value="date" <?php if(isset($sk_options_full_calendar['start_date_type']) and $sk_options_full_calendar['start_date_type'] == 'date') echo 'selected="selected"'; ?>><?php _e('On a certain date', 'modern-events-calendar-lite'); ?></option>
@@ -371,7 +401,7 @@ $events = $this->main->get_events();
371
  </div>
372
  <div class="mec-form-row">
373
  <label class="mec-col-4" for="mec_skin_full_calendar_default_view"><?php _e('Default View', 'modern-events-calendar-lite'); ?></label>
374
- <select class="mec-col-4" name="mec[sk-options][full_calendar][default_view]" id="mec_skin_full_calendar_default_view">
375
  <option value="list" <?php echo (isset($sk_options_full_calendar['default_view']) and $sk_options_full_calendar['default_view'] == 'list') ? 'selected="selected"' : ''; ?>><?php _e('List View', 'modern-events-calendar-lite'); ?></option>
376
  <option value="yearly" <?php echo (isset($sk_options_full_calendar['default_view']) and $sk_options_full_calendar['default_view'] == 'yearly') ? 'selected="selected"' : ''; ?>><?php _e('Yearly View', 'modern-events-calendar-lite'); ?></option>
377
  <option value="monthly" <?php echo (isset($sk_options_full_calendar['default_view']) and $sk_options_full_calendar['default_view'] == 'monthly') ? 'selected="selected"' : ''; ?>><?php _e('Monthly/Calendar View', 'modern-events-calendar-lite'); ?></option>
@@ -381,7 +411,7 @@ $events = $this->main->get_events();
381
  </div>
382
  <div class="mec-form-row">
383
  <label class="mec-col-4" for="mec_skin_full_calendar_monthly_style"><?php _e('Monthly Style', 'modern-events-calendar-lite'); ?></label>
384
- <select class="mec-col-4" name="mec[sk-options][full_calendar][monthly_style]" id="mec_skin_full_calendar_monthly_style">
385
  <option value="clean" <?php echo (isset($sk_options_full_calendar['monthly_style']) and $sk_options_full_calendar['monthly_style'] == 'clean') ? 'selected="selected"' : ''; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
386
  <option value="novel" <?php echo (isset($sk_options_full_calendar['monthly_style']) and $sk_options_full_calendar['monthly_style'] == 'novel') ? 'selected="selected"' : ''; ?>><?php _e('Novel', 'modern-events-calendar-lite'); ?></option>
387
  <option value="simple" <?php echo (isset($sk_options_full_calendar['monthly_style']) and $sk_options_full_calendar['monthly_style'] == 'simple') ? 'selected="selected"' : ''; ?>><?php _e('Simple', 'modern-events-calendar-lite'); ?></option>
@@ -477,13 +507,13 @@ $events = $this->main->get_events();
477
  <?php $sk_options_yearly_view = isset($sk_options['yearly_view']) ? $sk_options['yearly_view'] : array(); ?>
478
  <div class="mec-form-row">
479
  <label class="mec-col-4" for="mec_skin_yearly_view_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
480
- <select class="mec-col-4" name="mec[sk-options][yearly_view][style]" id="mec_skin_yearly_view_style" onchange="mec_skin_style_changed('yearly_view', this.value);">
481
  <option value="modern" <?php if(isset($sk_options_yearly_view['style']) and $sk_options_yearly_view['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
482
  </select>
483
  </div>
484
  <div class="mec-form-row">
485
  <label class="mec-col-4" for="mec_skin_yearly_view_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
486
- <select class="mec-col-4" name="mec[sk-options][yearly_view][start_date_type]" id="mec_skin_yearly_view_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_yearly_view_start_date_container').show(); else jQuery('#mec_skin_yearly_view_start_date_container').hide();">
487
  <option value="start_current_year" <?php if(isset($sk_options_yearly_view['start_date_type']) and $sk_options_yearly_view['start_date_type'] == 'start_current_year') echo 'selected="selected"'; ?>><?php _e('Start of Current Year', 'modern-events-calendar-lite'); ?></option>
488
  <option value="start_next_year" <?php if(isset($sk_options_yearly_view['start_date_type']) and $sk_options_yearly_view['start_date_type'] == 'start_next_year') echo 'selected="selected"'; ?>><?php _e('Start of Next Year', 'modern-events-calendar-lite'); ?></option>
489
  <option value="date" <?php if(isset($sk_options_yearly_view['start_date_type']) and $sk_options_yearly_view['start_date_type'] == 'date') echo 'selected="selected"'; ?>><?php _e('On a certain date', 'modern-events-calendar-lite'); ?></option>
@@ -527,7 +557,7 @@ $events = $this->main->get_events();
527
  <?php $sk_options_monthly_view = isset($sk_options['monthly_view']) ? $sk_options['monthly_view'] : array(); ?>
528
  <div class="mec-form-row">
529
  <label class="mec-col-4" for="mec_skin_monthly_view_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
530
- <select class="mec-col-4" name="mec[sk-options][monthly_view][style]" id="mec_skin_monthly_view_style" onchange="mec_skin_style_changed('monthly_view', this.value);">
531
  <option value="classic" <?php if(isset($sk_options_monthly_view['style']) and $sk_options_monthly_view['style'] == 'classic') echo 'selected="selected"'; ?>><?php _e('Classic', 'modern-events-calendar-lite'); ?></option>
532
  <option value="clean" <?php if(isset($sk_options_monthly_view['style']) and $sk_options_monthly_view['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
533
  <option value="modern" <?php if(isset($sk_options_monthly_view['style']) and $sk_options_monthly_view['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
@@ -537,7 +567,7 @@ $events = $this->main->get_events();
537
  </div>
538
  <div class="mec-form-row">
539
  <label class="mec-col-4" for="mec_skin_monthly_view_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
540
- <select class="mec-col-4" name="mec[sk-options][monthly_view][start_date_type]" id="mec_skin_monthly_view_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_monthly_view_start_date_container').show(); else jQuery('#mec_skin_monthly_view_start_date_container').hide();">
541
  <option value="start_current_month" <?php if(isset($sk_options_monthly_view['start_date_type']) and $sk_options_monthly_view['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
542
  <option value="start_next_month" <?php if(isset($sk_options_monthly_view['start_date_type']) and $sk_options_monthly_view['start_date_type'] == 'start_next_month') echo 'selected="selected"'; ?>><?php _e('Start of Next Month', 'modern-events-calendar-lite'); ?></option>
543
  <option value="date" <?php if(isset($sk_options_monthly_view['start_date_type']) and $sk_options_monthly_view['start_date_type'] == 'date') echo 'selected="selected"'; ?>><?php _e('On a certain date', 'modern-events-calendar-lite'); ?></option>
@@ -584,7 +614,7 @@ $events = $this->main->get_events();
584
  <?php $sk_options_map = isset($sk_options['map']) ? $sk_options['map'] : array(); ?>
585
  <div class="mec-form-row">
586
  <label class="mec-col-4" for="mec_skin_map_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
587
- <select class="mec-col-4" name="mec[sk-options][map][start_date_type]" id="mec_skin_map_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_map_start_date_container').show(); else jQuery('#mec_skin_map_start_date_container').hide();">
588
  <option value="today" <?php if(isset($sk_options_map['start_date_type']) and $sk_options_map['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
589
  <option value="tomorrow" <?php if(isset($sk_options_map['start_date_type']) and $sk_options_map['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
590
  <option value="start_current_month" <?php if(isset($sk_options_map['start_date_type']) and $sk_options_map['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -617,7 +647,7 @@ $events = $this->main->get_events();
617
  <?php $sk_options_daily_view = isset($sk_options['daily_view']) ? $sk_options['daily_view'] : array(); ?>
618
  <div class="mec-form-row">
619
  <label class="mec-col-4" for="mec_skin_daily_view_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
620
- <select class="mec-col-4" name="mec[sk-options][daily_view][start_date_type]" id="mec_skin_daily_view_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_daily_view_start_date_container').show(); else jQuery('#mec_skin_daily_view_start_date_container').hide();">
621
  <option value="today" <?php if(isset($sk_options_daily_view['start_date_type']) and $sk_options_daily_view['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
622
  <option value="tomorrow" <?php if(isset($sk_options_daily_view['start_date_type']) and $sk_options_daily_view['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
623
  <option value="start_current_month" <?php if(isset($sk_options_daily_view['start_date_type']) and $sk_options_daily_view['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -652,7 +682,7 @@ $events = $this->main->get_events();
652
  <?php $sk_options_weekly_view = isset($sk_options['weekly_view']) ? $sk_options['weekly_view'] : array(); ?>
653
  <div class="mec-form-row">
654
  <label class="mec-col-4" for="mec_skin_weekly_view_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
655
- <select class="mec-col-4" name="mec[sk-options][weekly_view][start_date_type]" id="mec_skin_weekly_view_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_weekly_view_start_date_container').show(); else jQuery('#mec_skin_weekly_view_start_date_container').hide();">
656
  <option value="start_current_week" <?php if(isset($sk_options_weekly_view['start_date_type']) and $sk_options_weekly_view['start_date_type'] == 'start_current_week') echo 'selected="selected"'; ?>><?php _e('Current Week', 'modern-events-calendar-lite'); ?></option>
657
  <option value="start_next_week" <?php if(isset($sk_options_weekly_view['start_date_type']) and $sk_options_weekly_view['start_date_type'] == 'start_next_week') echo 'selected="selected"'; ?>><?php _e('Next Week', 'modern-events-calendar-lite'); ?></option>
658
  <option value="start_current_month" <?php if(isset($sk_options_weekly_view['start_date_type']) and $sk_options_weekly_view['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -691,14 +721,14 @@ $events = $this->main->get_events();
691
  <?php $sk_options_timetable = isset($sk_options['timetable']) ? $sk_options['timetable'] : array(); ?>
692
  <div class="mec-form-row">
693
  <label class="mec-col-4" for="mec_skin_timetable_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
694
- <select class="mec-col-4" name="mec[sk-options][timetable][style]" id="mec_skin_timetable_style" onchange="mec_skin_style_changed('timetable', this.value); if(this.value == 'clean'){ jQuery('.mec-timetable-clean-style-depended').show(); jQuery('.mec-timetable-modern-style-depended').hide(); } else { jQuery('.mec-timetable-clean-style-depended').hide(); jQuery('.mec-timetable-modern-style-depended').show(); }">
695
  <option value="modern" <?php if(isset($sk_options_timetable['style']) and $sk_options_timetable['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
696
  <option value="clean" <?php if(isset($sk_options_timetable['style']) and $sk_options_timetable['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
697
  </select>
698
  </div>
699
  <div class="mec-form-row">
700
  <label class="mec-col-4" for="mec_skin_timetable_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
701
- <select class="mec-col-4" name="mec[sk-options][timetable][start_date_type]" id="mec_skin_timetable_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_timetable_start_date_container').show(); else jQuery('#mec_skin_timetable_start_date_container').hide();">
702
  <option value="start_current_week" <?php if(isset($sk_options_timetable['start_date_type']) and $sk_options_timetable['start_date_type'] == 'start_current_week') echo 'selected="selected"'; ?>><?php _e('Current Week', 'modern-events-calendar-lite'); ?></option>
703
  <option value="start_next_week" <?php if(isset($sk_options_timetable['start_date_type']) and $sk_options_timetable['start_date_type'] == 'start_next_week') echo 'selected="selected"'; ?>><?php _e('Next Week', 'modern-events-calendar-lite'); ?></option>
704
  <option value="start_current_month" <?php if(isset($sk_options_timetable['start_date_type']) and $sk_options_timetable['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -716,7 +746,7 @@ $events = $this->main->get_events();
716
  <div class="mec-timetable-clean-style-depended">
717
  <div class="mec-form-row">
718
  <label class="mec-col-4" for="mec_skin_timetable_number_of_days"><?php _e('Number of Days', 'modern-events-calendar-lite'); ?></label>
719
- <select class="mec-col-4" name="mec[sk-options][timetable][number_of_days]" id="mec_skin_timetable_number_of_days">
720
  <option value="5" <?php if(isset($sk_options_timetable['number_of_days']) and $sk_options_timetable['number_of_days'] == '5') echo 'selected="selected"'; ?>>5</option>
721
  <option value="6" <?php if(isset($sk_options_timetable['number_of_days']) and $sk_options_timetable['number_of_days'] == '6') echo 'selected="selected"'; ?>>6</option>
722
  <option value="7" <?php if(isset($sk_options_timetable['number_of_days']) and $sk_options_timetable['number_of_days'] == '7') echo 'selected="selected"'; ?>>7</option>
@@ -724,7 +754,7 @@ $events = $this->main->get_events();
724
  </div>
725
  <div class="mec-form-row">
726
  <label class="mec-col-4" for="mec_skin_timetable_week_start"><?php _e('Week Start', 'modern-events-calendar-lite'); ?></label>
727
- <select class="mec-col-4" name="mec[sk-options][timetable][week_start]" id="mec_skin_timetable_week_start">
728
  <option value="-1" <?php if(isset($sk_options_timetable['week_start']) and $sk_options_timetable['week_start'] == '-1') echo 'selected="selected"'; ?>><?php _e('Inherite from WordPress options', 'modern-events-calendar-lite'); ?></option>
729
  <option value="0" <?php if(isset($sk_options_timetable['week_start']) and $sk_options_timetable['week_start'] == '0') echo 'selected="selected"'; ?>><?php _e('Sunday', 'modern-events-calendar-lite'); ?></option>
730
  <option value="1" <?php if(isset($sk_options_timetable['week_start']) and $sk_options_timetable['week_start'] == '1') echo 'selected="selected"'; ?>><?php _e('Monday', 'modern-events-calendar-lite'); ?></option>
@@ -764,7 +794,7 @@ $events = $this->main->get_events();
764
  <?php $sk_options_masonry = isset($sk_options['masonry']) ? $sk_options['masonry'] : array(); ?>
765
  <div class="mec-form-row">
766
  <label class="mec-col-4" for="mec_skin_masonry_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
767
- <select class="mec-col-4" name="mec[sk-options][masonry][start_date_type]" id="mec_skin_masonry_start_date_type" onchange="if(this.value === 'date') jQuery('#mec_skin_masonry_start_date_container').show(); else jQuery('#mec_skin_masonry_start_date_container').hide();">
768
  <option value="today" <?php if(isset($sk_options_masonry['start_date_type']) and $sk_options_masonry['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
769
  <option value="tomorrow" <?php if(isset($sk_options_masonry['start_date_type']) and $sk_options_masonry['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
770
  <option value="start_current_month" <?php if(isset($sk_options_masonry['start_date_type']) and $sk_options_masonry['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -793,7 +823,7 @@ $events = $this->main->get_events();
793
  </div>
794
  <div class="mec-form-row">
795
  <label class="mec-col-4" for="mec_skin_masonry_filter_by"><?php _e('Filter By', 'modern-events-calendar-lite'); ?></label>
796
- <select class="mec-col-4" name="mec[sk-options][masonry][filter_by]" id="mec_skin_masonry_filter_by">
797
  <option value="" <?php if(isset($sk_options_masonry['filter_by']) and $sk_options_masonry['filter_by'] == '') echo 'selected="selected"'; ?>><?php _e('None', 'modern-events-calendar-lite'); ?></option>
798
  <option value="category" <?php if(isset($sk_options_masonry['filter_by']) and $sk_options_masonry['filter_by'] == 'category') echo 'selected="selected"'; ?>><?php _e('Category', 'modern-events-calendar-lite'); ?></option>
799
  <option value="label" <?php if(isset($sk_options_masonry['filter_by']) and $sk_options_masonry['filter_by'] == 'label') echo 'selected="selected"'; ?>><?php _e('Label', 'modern-events-calendar-lite'); ?></option>
@@ -841,7 +871,7 @@ $events = $this->main->get_events();
841
  <?php $sk_options_cover = isset($sk_options['cover']) ? $sk_options['cover'] : array(); ?>
842
  <div class="mec-form-row">
843
  <label class="mec-col-4" for="mec_skin_cover_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
844
- <select class="mec-col-4" name="mec[sk-options][cover][style]" id="mec_skin_cover_style" onchange="mec_skin_style_changed('cover', this.value);">
845
  <option value="classic" <?php if(isset($sk_options_cover['style']) and $sk_options_cover['style'] == 'classic') echo 'selected="selected"'; ?>><?php _e('Classic', 'modern-events-calendar-lite'); ?></option>
846
  <option value="clean" <?php if(isset($sk_options_cover['style']) and $sk_options_cover['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
847
  <option value="modern" <?php if(isset($sk_options_cover['style']) and $sk_options_cover['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
@@ -885,7 +915,7 @@ $events = $this->main->get_events();
885
  </div>
886
  <div class="mec-form-row">
887
  <label class="mec-col-4" for="mec_skin_cover_event_id"><?php _e('Event', 'modern-events-calendar-lite'); ?></label>
888
- <select class="mec-col-4" name="mec[sk-options][cover][event_id]" id="mec_skin_cover_event_id">
889
  <?php foreach($events as $event): ?>
890
  <option value="<?php echo $event->ID; ?>" <?php if(isset($sk_options_cover['event_id']) and $sk_options_cover['event_id'] == $event->ID) echo 'selected="selected"'; ?>><?php echo $event->post_title; ?></option>
891
  <?php endforeach; ?>
@@ -898,7 +928,7 @@ $events = $this->main->get_events();
898
  <?php $sk_options_countdown = isset($sk_options['countdown']) ? $sk_options['countdown'] : array(); ?>
899
  <div class="mec-form-row">
900
  <label class="mec-col-4" for="mec_skin_countdown_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
901
- <select class="mec-col-4" name="mec[sk-options][countdown][style]" id="mec_skin_countdown_style" onchange="mec_skin_style_changed('countdown', this.value);">
902
  <option value="style1" <?php if(isset($sk_options_countdown['style']) and $sk_options_countdown['style'] == 'style1') echo 'selected="selected"'; ?>><?php _e('Style 1', 'modern-events-calendar-lite'); ?></option>
903
  <option value="style2" <?php if(isset($sk_options_countdown['style']) and $sk_options_countdown['style'] == 'style2') echo 'selected="selected"'; ?>><?php _e('Style 2', 'modern-events-calendar-lite'); ?></option>
904
  <option value="style3" <?php if(isset($sk_options_countdown['style']) and $sk_options_countdown['style'] == 'style3') echo 'selected="selected"'; ?>><?php _e('Style 3', 'modern-events-calendar-lite'); ?></option>
@@ -941,7 +971,7 @@ $events = $this->main->get_events();
941
  </div>
942
  <div class="mec-form-row">
943
  <label class="mec-col-4" for="mec_skin_countdown_event_id"><?php _e('Event', 'modern-events-calendar-lite'); ?></label>
944
- <select class="mec-col-4" name="mec[sk-options][countdown][event_id]" id="mec_skin_countdown_event_id">
945
  <option value="-1" <?php if(isset($sk_options_countdown['event_id']) and $sk_options_countdown['event_id'] == '-1') echo 'selected="selected"'; ?>><?php echo __(' -- Next Upcoming Event -- ', 'modern-events-calendar-lite') ?></option>
946
  <?php foreach($events as $event): ?>
947
  <option value="<?php echo $event->ID; ?>" <?php if(isset($sk_options_countdown['event_id']) and $sk_options_countdown['event_id'] == $event->ID) echo 'selected="selected"'; ?>><?php echo $event->post_title; ?></option>
@@ -976,7 +1006,7 @@ $events = $this->main->get_events();
976
  </div>
977
  <div class="mec-form-row">
978
  <label class="mec-col-4" for="mec_skin_available_spot_event_id"><?php _e('Event', 'modern-events-calendar-lite'); ?></label>
979
- <select class="mec-col-4" name="mec[sk-options][available_spot][event_id]" id="mec_skin_available_spot_event_id">
980
  <option value="-1" <?php if(isset($sk_options_available_spot['event_id']) and $sk_options_available_spot['event_id'] == '-1') echo 'selected="selected"'; ?>><?php echo __(' -- Next Upcoming Event -- ', 'modern-events-calendar-lite') ?></option>
981
  <?php foreach($events as $event): ?>
982
  <option value="<?php echo $event->ID; ?>" <?php if(isset($sk_options_available_spot['event_id']) and $sk_options_available_spot['event_id'] == $event->ID) echo 'selected="selected"'; ?>><?php echo $event->post_title; ?></option>
@@ -990,7 +1020,7 @@ $events = $this->main->get_events();
990
  <?php $sk_options_carousel = isset($sk_options['carousel']) ? $sk_options['carousel'] : array(); ?>
991
  <div class="mec-form-row">
992
  <label class="mec-col-4" for="mec_skin_carousel_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
993
- <select class="mec-col-4" name="mec[sk-options][carousel][style]" id="mec_skin_carousel_style" onchange="mec_skin_style_changed('carousel', this.value); if(this.value == 'type4'){ jQuery('.mec-carousel-archive-link').show();jQuery('.mec-carousel-head-text').show();} else { jQuery('.mec-carousel-archive-link').hide(); jQuery('.mec-carousel-head-text').hide(); }">
994
  <option value="type1" <?php if(isset($sk_options_carousel['style']) and $sk_options_carousel['style'] == 'type1') echo 'selected="selected"'; ?>><?php _e('Type 1', 'modern-events-calendar-lite'); ?></option>
995
  <option value="type2" <?php if(isset($sk_options_carousel['style']) and $sk_options_carousel['style'] == 'type2') echo 'selected="selected"'; ?>><?php _e('Type 2', 'modern-events-calendar-lite'); ?></option>
996
  <option value="type3" <?php if(isset($sk_options_carousel['style']) and $sk_options_carousel['style'] == 'type3') echo 'selected="selected"'; ?>><?php _e('Type 3', 'modern-events-calendar-lite'); ?></option>
@@ -999,7 +1029,7 @@ $events = $this->main->get_events();
999
  </div>
1000
  <div class="mec-form-row">
1001
  <label class="mec-col-4" for="mec_skin_carousel_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
1002
- <select class="mec-col-4" name="mec[sk-options][carousel][start_date_type]" id="mec_skin_carousel_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_carousel_start_date_container').show(); else jQuery('#mec_skin_carousel_start_date_container').hide();">
1003
  <option value="today" <?php if(isset($sk_options_carousel['start_date_type']) and $sk_options_carousel['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
1004
  <option value="tomorrow" <?php if(isset($sk_options_carousel['start_date_type']) and $sk_options_carousel['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
1005
  <option value="start_current_month" <?php if(isset($sk_options_carousel['start_date_type']) and $sk_options_carousel['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -1047,7 +1077,7 @@ $events = $this->main->get_events();
1047
  </div>
1048
  <div class="mec-form-row">
1049
  <label class="mec-col-4" for="mec_skin_carousel_count"><?php _e('Count in row', 'modern-events-calendar-lite'); ?></label>
1050
- <select class="mec-col-4" name="mec[sk-options][carousel][count]" id="mec_skin_carousel_count">
1051
  <option value="2" <?php echo (isset($sk_options_carousel['count']) and $sk_options_carousel['count'] == 2) ? 'selected="selected"' : ''; ?>>2</option>
1052
  <option value="3" <?php echo (isset($sk_options_carousel['count']) and $sk_options_carousel['count'] == 3) ? 'selected="selected"' : ''; ?>>3</option>
1053
  <option value="4" <?php echo (isset($sk_options_carousel['count']) and $sk_options_carousel['count'] == 4) ? 'selected="selected"' : ''; ?>>4</option>
@@ -1076,7 +1106,7 @@ $events = $this->main->get_events();
1076
  <?php $sk_options_slider = isset($sk_options['slider']) ? $sk_options['slider'] : array(); ?>
1077
  <div class="mec-form-row">
1078
  <label class="mec-col-4" for="mec_skin_slider_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
1079
- <select class="mec-col-4" name="mec[sk-options][slider][style]" id="mec_skin_slider_style" onchange="mec_skin_style_changed('slider', this.value);">
1080
  <option value="t1" <?php if(isset($sk_options_slider['style']) and $sk_options_slider['style'] == 't1') echo 'selected="selected"'; ?>><?php _e('Type 1', 'modern-events-calendar-lite'); ?></option>
1081
  <option value="t2" <?php if(isset($sk_options_slider['style']) and $sk_options_slider['style'] == 't2') echo 'selected="selected"'; ?>><?php _e('Type 2', 'modern-events-calendar-lite'); ?></option>
1082
  <option value="t3" <?php if(isset($sk_options_slider['style']) and $sk_options_slider['style'] == 't3') echo 'selected="selected"'; ?>><?php _e('Type 3', 'modern-events-calendar-lite'); ?></option>
@@ -1086,7 +1116,7 @@ $events = $this->main->get_events();
1086
  </div>
1087
  <div class="mec-form-row">
1088
  <label class="mec-col-4" for="mec_skin_slider_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
1089
- <select class="mec-col-4" name="mec[sk-options][slider][start_date_type]" id="mec_skin_slider_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_slider_start_date_container').show(); else jQuery('#mec_skin_slider_start_date_container').hide();">
1090
  <option value="today" <?php if(isset($sk_options_slider['start_date_type']) and $sk_options_slider['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
1091
  <option value="tomorrow" <?php if(isset($sk_options_slider['start_date_type']) and $sk_options_slider['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
1092
  <option value="start_current_month" <?php if(isset($sk_options_slider['start_date_type']) and $sk_options_slider['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
@@ -1176,4 +1206,96 @@ $events = $this->main->get_events();
1176
  <?php do_action('mec_skin_options', $sk_options); ?>
1177
  </div>
1178
  </div>
1179
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  <div class="mec-meta-box-fields" id="mec_meta_box_calendar_skin_options">
17
  <div class="mec-form-row">
18
  <label class="mec-col-4" for="mec_skin"><?php _e('Skin', 'modern-events-calendar-lite'); ?></label>
19
+ <select class="mec-col-4 wn-mec-select mec-custom-nice-select" name="mec[skin]" id="mec_skin" onchange="if( jQuery('#mec_skin').val() != 'carousel' ){ jQuery('.mec-carousel-archive-link').hide();jQuery('.mec-carousel-head-text').hide();}">
20
  <?php foreach($skins as $skin=>$name): ?>
21
+ <option value="<?php echo $skin; ?>" <?php if($selected_skin == $skin) echo 'selected="selected"'; ?>>
22
+ <?php echo $name; ?>
23
+ </option>
24
  <?php endforeach; ?>
25
  </select>
26
  </div>
32
  <?php $sk_options_list = isset($sk_options['list']) ? $sk_options['list'] : array(); ?>
33
  <div class="mec-form-row">
34
  <label class="mec-col-4" for="mec_skin_list_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
35
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][list][style]" id="mec_skin_list_style" onchange="mec_skin_style_changed('list', this.value); if(this.value == 'accordion'){ jQuery('.mec-sed-methode-container').hide();jQuery('.mec-toggle-month-divider').show(); }else{ jQuery('.mec-sed-methode-container').show();jQuery('.mec-toggle-month-divider').hide()}">
36
  <option value="classic" <?php if(isset($sk_options_list['style']) and $sk_options_list['style'] == 'classic') echo 'selected="selected"'; ?>><?php _e('Classic', 'modern-events-calendar-lite'); ?></option>
37
  <option value="minimal" <?php if(isset($sk_options_list['style']) and $sk_options_list['style'] == 'minimal') echo 'selected="selected"'; ?>><?php _e('Minimal', 'modern-events-calendar-lite'); ?></option>
38
  <option value="modern" <?php if(isset($sk_options_list['style']) and $sk_options_list['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
42
  </div>
43
  <div class="mec-form-row">
44
  <label class="mec-col-4" for="mec_skin_list_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
45
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][list][start_date_type]" id="mec_skin_list_start_date_type" onchange="if(this.value === 'date') jQuery('#mec_skin_list_start_date_container').show(); else jQuery('#mec_skin_list_start_date_container').hide();">
46
  <option value="today" <?php if(isset($sk_options_list['start_date_type']) and $sk_options_list['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
47
  <option value="tomorrow" <?php if(isset($sk_options_list['start_date_type']) and $sk_options_list['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
48
  <option value="start_current_month" <?php if(isset($sk_options_list['start_date_type']) and $sk_options_list['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
137
  <label for="mec_skin_list_month_divider"></label>
138
  </div>
139
  </div>
140
+ <div class="mec-form-row mec-switcher">
141
+ <div class="mec-col-4">
142
+ <label for="mec_skin_list_map_on_top"><?php _e('Show Map on top', 'modern-events-calendar-lite'); ?></label>
143
+ </div>
144
+ <div class="mec-col-4">
145
+ <?php if(!$this->main->getPRO()): ?>
146
+ <div class="info-msg"><?php echo sprintf(__("%s is required to use this feature.", 'modern-events-calendar-lite'), '<a href="'.$this->main->get_pro_link().'" target="_blank">'.__('Pro version of Modern Events Calendar', 'modern-events-calendar-lite').'</a>'); ?></div>
147
+ <?php else: ?>
148
+ <input type="hidden" name="mec[sk-options][list][map_on_top]" value="0" />
149
+ <input type="checkbox" name="mec[sk-options][list][map_on_top]" id="mec_skin_list_map_on_top" value="1" <?php if(isset($sk_options_list['map_on_top']) and $sk_options_list['map_on_top']) echo 'checked="checked"'; ?> />
150
+ <label for="mec_skin_list_map_on_top"></label>
151
+ <?php endif; ?>
152
+ </div>
153
+ </div>
154
  <div class="mec-sed-methode-container">
155
  <?php echo $this->sed_method_field('list', (isset($sk_options_list['sed_method']) ? $sk_options_list['sed_method'] : 0), (isset($sk_options_list['image_popup']) ? $sk_options_list['image_popup'] : 0)); ?>
156
  </div>
171
  <?php $sk_options_grid = isset($sk_options['grid']) ? $sk_options['grid'] : array(); ?>
172
  <div class="mec-form-row">
173
  <label class="mec-col-4" for="mec_skin_grid_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
174
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][grid][style]" id="mec_skin_grid_style" onchange="mec_skin_style_changed('grid', this.value);">
175
  <option value="classic" <?php if(isset($sk_options_grid['style']) and $sk_options_grid['style'] == 'classic') echo 'selected="selected"'; ?>><?php _e('Classic', 'modern-events-calendar-lite'); ?></option>
176
  <option value="clean" <?php if(isset($sk_options_grid['style']) and $sk_options_grid['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
177
  <option value="minimal" <?php if(isset($sk_options_grid['style']) and $sk_options_grid['style'] == 'minimal') echo 'selected="selected"'; ?>><?php _e('Minimal', 'modern-events-calendar-lite'); ?></option>
183
  </div>
184
  <div class="mec-form-row">
185
  <label class="mec-col-4" for="mec_skin_grid_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
186
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][grid][start_date_type]" id="mec_skin_grid_start_date_type" onchange="if(this.value === 'date') jQuery('#mec_skin_grid_start_date_container').show(); else jQuery('#mec_skin_grid_start_date_container').hide();">
187
  <option value="today" <?php if(isset($sk_options_grid['start_date_type']) and $sk_options_grid['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
188
  <option value="tomorrow" <?php if(isset($sk_options_grid['start_date_type']) and $sk_options_grid['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
189
  <option value="start_current_month" <?php if(isset($sk_options_grid['start_date_type']) and $sk_options_grid['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
279
  </div>
280
  <div class="mec-form-row">
281
  <label class="mec-col-4" for="mec_skin_grid_count"><?php _e('Count in row', 'modern-events-calendar-lite'); ?></label>
282
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][grid][count]" id="mec_skin_grid_count">
283
  <option value="1" <?php echo (isset($sk_options_grid['count']) and $sk_options_grid['count'] == 1) ? 'selected="selected"' : ''; ?>>1</option>
284
  <option value="2" <?php echo (isset($sk_options_grid['count']) and $sk_options_grid['count'] == 2) ? 'selected="selected"' : ''; ?>>2</option>
285
  <option value="3" <?php echo (isset($sk_options_grid['count']) and $sk_options_grid['count'] == 3) ? 'selected="selected"' : ''; ?>>3</option>
302
  <label for="mec_skin_grid_load_more_button"></label>
303
  </div>
304
  </div>
305
+ <div class="mec-form-row mec-switcher">
306
+ <div class="mec-col-4">
307
+ <label for="mec_skin_grid_map_on_top"><?php _e('Show Map on top', 'modern-events-calendar-lite'); ?></label>
308
+ </div>
309
+ <div class="mec-col-4">
310
+ <?php if(!$this->main->getPRO()): ?>
311
+ <div class="info-msg"><?php echo sprintf(__("%s is required to use this feature.", 'modern-events-calendar-lite'), '<a href="'.$this->main->get_pro_link().'" target="_blank">'.__('Pro version of Modern Events Calendar', 'modern-events-calendar-lite').'</a>'); ?></div>
312
+ <?php else: ?>
313
+ <input type="hidden" name="mec[sk-options][grid][map_on_top]" value="0" />
314
+ <input type="checkbox" name="mec[sk-options][grid][map_on_top]" id="mec_skin_grid_map_on_top" value="1" <?php if(isset($sk_options_grid['map_on_top']) and $sk_options_grid['map_on_top']) echo 'checked="checked"'; ?> />
315
+ <label for="mec_skin_grid_map_on_top"></label>
316
+ <?php endif; ?>
317
+ </div>
318
+ </div>
319
  <?php echo $this->sed_method_field('grid', (isset($sk_options_grid['sed_method']) ? $sk_options_grid['sed_method'] : 0), (isset($sk_options_grid['image_popup']) ? $sk_options_grid['image_popup'] : 0)); ?>
320
  </div>
321
 
329
  <?php $sk_options_agenda = isset($sk_options['agenda']) ? $sk_options['agenda'] : array(); ?>
330
  <div class="mec-form-row">
331
  <label class="mec-col-4" for="mec_skin_agenda_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
332
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][agenda][style]" id="mec_skin_agenda_style" onchange="mec_skin_style_changed('agenda', this.value);">
333
  <option value="clean" <?php if(isset($sk_options_agenda['style']) and $sk_options_agenda['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
334
  </select>
335
  </div>
336
  <div class="mec-form-row">
337
  <label class="mec-col-4" for="mec_skin_agenda_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
338
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][agenda][start_date_type]" id="mec_skin_agenda_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_agenda_start_date_container').show(); else jQuery('#mec_skin_agenda_start_date_container').hide();">
339
  <option value="today" <?php if(isset($sk_options_agenda['start_date_type']) and $sk_options_agenda['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
340
  <option value="tomorrow" <?php if(isset($sk_options_agenda['start_date_type']) and $sk_options_agenda['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
341
  <option value="start_current_month" <?php if(isset($sk_options_agenda['start_date_type']) and $sk_options_agenda['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
390
  <?php $sk_options_full_calendar = isset($sk_options['full_calendar']) ? $sk_options['full_calendar'] : array(); ?>
391
  <div class="mec-form-row">
392
  <label class="mec-col-4" for="mec_skin_full_calendar_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
393
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][full_calendar][start_date_type]" id="mec_skin_full_calendar_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_full_calendar_start_date_container').show(); else jQuery('#mec_skin_full_calendar_start_date_container').hide();">
394
  <option value="start_current_month" <?php if(isset($sk_options_full_calendar['start_date_type']) and $sk_options_full_calendar['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
395
  <option value="start_next_month" <?php if(isset($sk_options_full_calendar['start_date_type']) and $sk_options_full_calendar['start_date_type'] == 'start_next_month') echo 'selected="selected"'; ?>><?php _e('Start of Next Month', 'modern-events-calendar-lite'); ?></option>
396
  <option value="date" <?php if(isset($sk_options_full_calendar['start_date_type']) and $sk_options_full_calendar['start_date_type'] == 'date') echo 'selected="selected"'; ?>><?php _e('On a certain date', 'modern-events-calendar-lite'); ?></option>
401
  </div>
402
  <div class="mec-form-row">
403
  <label class="mec-col-4" for="mec_skin_full_calendar_default_view"><?php _e('Default View', 'modern-events-calendar-lite'); ?></label>
404
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][full_calendar][default_view]" id="mec_skin_full_calendar_default_view">
405
  <option value="list" <?php echo (isset($sk_options_full_calendar['default_view']) and $sk_options_full_calendar['default_view'] == 'list') ? 'selected="selected"' : ''; ?>><?php _e('List View', 'modern-events-calendar-lite'); ?></option>
406
  <option value="yearly" <?php echo (isset($sk_options_full_calendar['default_view']) and $sk_options_full_calendar['default_view'] == 'yearly') ? 'selected="selected"' : ''; ?>><?php _e('Yearly View', 'modern-events-calendar-lite'); ?></option>
407
  <option value="monthly" <?php echo (isset($sk_options_full_calendar['default_view']) and $sk_options_full_calendar['default_view'] == 'monthly') ? 'selected="selected"' : ''; ?>><?php _e('Monthly/Calendar View', 'modern-events-calendar-lite'); ?></option>
411
  </div>
412
  <div class="mec-form-row">
413
  <label class="mec-col-4" for="mec_skin_full_calendar_monthly_style"><?php _e('Monthly Style', 'modern-events-calendar-lite'); ?></label>
414
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][full_calendar][monthly_style]" id="mec_skin_full_calendar_monthly_style">
415
  <option value="clean" <?php echo (isset($sk_options_full_calendar['monthly_style']) and $sk_options_full_calendar['monthly_style'] == 'clean') ? 'selected="selected"' : ''; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
416
  <option value="novel" <?php echo (isset($sk_options_full_calendar['monthly_style']) and $sk_options_full_calendar['monthly_style'] == 'novel') ? 'selected="selected"' : ''; ?>><?php _e('Novel', 'modern-events-calendar-lite'); ?></option>
417
  <option value="simple" <?php echo (isset($sk_options_full_calendar['monthly_style']) and $sk_options_full_calendar['monthly_style'] == 'simple') ? 'selected="selected"' : ''; ?>><?php _e('Simple', 'modern-events-calendar-lite'); ?></option>
507
  <?php $sk_options_yearly_view = isset($sk_options['yearly_view']) ? $sk_options['yearly_view'] : array(); ?>
508
  <div class="mec-form-row">
509
  <label class="mec-col-4" for="mec_skin_yearly_view_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
510
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][yearly_view][style]" id="mec_skin_yearly_view_style" onchange="mec_skin_style_changed('yearly_view', this.value);">
511
  <option value="modern" <?php if(isset($sk_options_yearly_view['style']) and $sk_options_yearly_view['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
512
  </select>
513
  </div>
514
  <div class="mec-form-row">
515
  <label class="mec-col-4" for="mec_skin_yearly_view_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
516
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][yearly_view][start_date_type]" id="mec_skin_yearly_view_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_yearly_view_start_date_container').show(); else jQuery('#mec_skin_yearly_view_start_date_container').hide();">
517
  <option value="start_current_year" <?php if(isset($sk_options_yearly_view['start_date_type']) and $sk_options_yearly_view['start_date_type'] == 'start_current_year') echo 'selected="selected"'; ?>><?php _e('Start of Current Year', 'modern-events-calendar-lite'); ?></option>
518
  <option value="start_next_year" <?php if(isset($sk_options_yearly_view['start_date_type']) and $sk_options_yearly_view['start_date_type'] == 'start_next_year') echo 'selected="selected"'; ?>><?php _e('Start of Next Year', 'modern-events-calendar-lite'); ?></option>
519
  <option value="date" <?php if(isset($sk_options_yearly_view['start_date_type']) and $sk_options_yearly_view['start_date_type'] == 'date') echo 'selected="selected"'; ?>><?php _e('On a certain date', 'modern-events-calendar-lite'); ?></option>
557
  <?php $sk_options_monthly_view = isset($sk_options['monthly_view']) ? $sk_options['monthly_view'] : array(); ?>
558
  <div class="mec-form-row">
559
  <label class="mec-col-4" for="mec_skin_monthly_view_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
560
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][monthly_view][style]" id="mec_skin_monthly_view_style" onchange="mec_skin_style_changed('monthly_view', this.value);">
561
  <option value="classic" <?php if(isset($sk_options_monthly_view['style']) and $sk_options_monthly_view['style'] == 'classic') echo 'selected="selected"'; ?>><?php _e('Classic', 'modern-events-calendar-lite'); ?></option>
562
  <option value="clean" <?php if(isset($sk_options_monthly_view['style']) and $sk_options_monthly_view['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
563
  <option value="modern" <?php if(isset($sk_options_monthly_view['style']) and $sk_options_monthly_view['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
567
  </div>
568
  <div class="mec-form-row">
569
  <label class="mec-col-4" for="mec_skin_monthly_view_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
570
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][monthly_view][start_date_type]" id="mec_skin_monthly_view_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_monthly_view_start_date_container').show(); else jQuery('#mec_skin_monthly_view_start_date_container').hide();">
571
  <option value="start_current_month" <?php if(isset($sk_options_monthly_view['start_date_type']) and $sk_options_monthly_view['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
572
  <option value="start_next_month" <?php if(isset($sk_options_monthly_view['start_date_type']) and $sk_options_monthly_view['start_date_type'] == 'start_next_month') echo 'selected="selected"'; ?>><?php _e('Start of Next Month', 'modern-events-calendar-lite'); ?></option>
573
  <option value="date" <?php if(isset($sk_options_monthly_view['start_date_type']) and $sk_options_monthly_view['start_date_type'] == 'date') echo 'selected="selected"'; ?>><?php _e('On a certain date', 'modern-events-calendar-lite'); ?></option>
614
  <?php $sk_options_map = isset($sk_options['map']) ? $sk_options['map'] : array(); ?>
615
  <div class="mec-form-row">
616
  <label class="mec-col-4" for="mec_skin_map_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
617
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][map][start_date_type]" id="mec_skin_map_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_map_start_date_container').show(); else jQuery('#mec_skin_map_start_date_container').hide();">
618
  <option value="today" <?php if(isset($sk_options_map['start_date_type']) and $sk_options_map['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
619
  <option value="tomorrow" <?php if(isset($sk_options_map['start_date_type']) and $sk_options_map['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
620
  <option value="start_current_month" <?php if(isset($sk_options_map['start_date_type']) and $sk_options_map['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
647
  <?php $sk_options_daily_view = isset($sk_options['daily_view']) ? $sk_options['daily_view'] : array(); ?>
648
  <div class="mec-form-row">
649
  <label class="mec-col-4" for="mec_skin_daily_view_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
650
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][daily_view][start_date_type]" id="mec_skin_daily_view_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_daily_view_start_date_container').show(); else jQuery('#mec_skin_daily_view_start_date_container').hide();">
651
  <option value="today" <?php if(isset($sk_options_daily_view['start_date_type']) and $sk_options_daily_view['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
652
  <option value="tomorrow" <?php if(isset($sk_options_daily_view['start_date_type']) and $sk_options_daily_view['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
653
  <option value="start_current_month" <?php if(isset($sk_options_daily_view['start_date_type']) and $sk_options_daily_view['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
682
  <?php $sk_options_weekly_view = isset($sk_options['weekly_view']) ? $sk_options['weekly_view'] : array(); ?>
683
  <div class="mec-form-row">
684
  <label class="mec-col-4" for="mec_skin_weekly_view_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
685
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][weekly_view][start_date_type]" id="mec_skin_weekly_view_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_weekly_view_start_date_container').show(); else jQuery('#mec_skin_weekly_view_start_date_container').hide();">
686
  <option value="start_current_week" <?php if(isset($sk_options_weekly_view['start_date_type']) and $sk_options_weekly_view['start_date_type'] == 'start_current_week') echo 'selected="selected"'; ?>><?php _e('Current Week', 'modern-events-calendar-lite'); ?></option>
687
  <option value="start_next_week" <?php if(isset($sk_options_weekly_view['start_date_type']) and $sk_options_weekly_view['start_date_type'] == 'start_next_week') echo 'selected="selected"'; ?>><?php _e('Next Week', 'modern-events-calendar-lite'); ?></option>
688
  <option value="start_current_month" <?php if(isset($sk_options_weekly_view['start_date_type']) and $sk_options_weekly_view['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
721
  <?php $sk_options_timetable = isset($sk_options['timetable']) ? $sk_options['timetable'] : array(); ?>
722
  <div class="mec-form-row">
723
  <label class="mec-col-4" for="mec_skin_timetable_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
724
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][timetable][style]" id="mec_skin_timetable_style" onchange="mec_skin_style_changed('timetable', this.value); if(this.value == 'clean'){ jQuery('.mec-timetable-clean-style-depended').show(); jQuery('.mec-timetable-modern-style-depended').hide(); } else { jQuery('.mec-timetable-clean-style-depended').hide(); jQuery('.mec-timetable-modern-style-depended').show(); }">
725
  <option value="modern" <?php if(isset($sk_options_timetable['style']) and $sk_options_timetable['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
726
  <option value="clean" <?php if(isset($sk_options_timetable['style']) and $sk_options_timetable['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
727
  </select>
728
  </div>
729
  <div class="mec-form-row">
730
  <label class="mec-col-4" for="mec_skin_timetable_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
731
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][timetable][start_date_type]" id="mec_skin_timetable_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_timetable_start_date_container').show(); else jQuery('#mec_skin_timetable_start_date_container').hide();">
732
  <option value="start_current_week" <?php if(isset($sk_options_timetable['start_date_type']) and $sk_options_timetable['start_date_type'] == 'start_current_week') echo 'selected="selected"'; ?>><?php _e('Current Week', 'modern-events-calendar-lite'); ?></option>
733
  <option value="start_next_week" <?php if(isset($sk_options_timetable['start_date_type']) and $sk_options_timetable['start_date_type'] == 'start_next_week') echo 'selected="selected"'; ?>><?php _e('Next Week', 'modern-events-calendar-lite'); ?></option>
734
  <option value="start_current_month" <?php if(isset($sk_options_timetable['start_date_type']) and $sk_options_timetable['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
746
  <div class="mec-timetable-clean-style-depended">
747
  <div class="mec-form-row">
748
  <label class="mec-col-4" for="mec_skin_timetable_number_of_days"><?php _e('Number of Days', 'modern-events-calendar-lite'); ?></label>
749
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][timetable][number_of_days]" id="mec_skin_timetable_number_of_days">
750
  <option value="5" <?php if(isset($sk_options_timetable['number_of_days']) and $sk_options_timetable['number_of_days'] == '5') echo 'selected="selected"'; ?>>5</option>
751
  <option value="6" <?php if(isset($sk_options_timetable['number_of_days']) and $sk_options_timetable['number_of_days'] == '6') echo 'selected="selected"'; ?>>6</option>
752
  <option value="7" <?php if(isset($sk_options_timetable['number_of_days']) and $sk_options_timetable['number_of_days'] == '7') echo 'selected="selected"'; ?>>7</option>
754
  </div>
755
  <div class="mec-form-row">
756
  <label class="mec-col-4" for="mec_skin_timetable_week_start"><?php _e('Week Start', 'modern-events-calendar-lite'); ?></label>
757
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][timetable][week_start]" id="mec_skin_timetable_week_start">
758
  <option value="-1" <?php if(isset($sk_options_timetable['week_start']) and $sk_options_timetable['week_start'] == '-1') echo 'selected="selected"'; ?>><?php _e('Inherite from WordPress options', 'modern-events-calendar-lite'); ?></option>
759
  <option value="0" <?php if(isset($sk_options_timetable['week_start']) and $sk_options_timetable['week_start'] == '0') echo 'selected="selected"'; ?>><?php _e('Sunday', 'modern-events-calendar-lite'); ?></option>
760
  <option value="1" <?php if(isset($sk_options_timetable['week_start']) and $sk_options_timetable['week_start'] == '1') echo 'selected="selected"'; ?>><?php _e('Monday', 'modern-events-calendar-lite'); ?></option>
794
  <?php $sk_options_masonry = isset($sk_options['masonry']) ? $sk_options['masonry'] : array(); ?>
795
  <div class="mec-form-row">
796
  <label class="mec-col-4" for="mec_skin_masonry_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
797
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][masonry][start_date_type]" id="mec_skin_masonry_start_date_type" onchange="if(this.value === 'date') jQuery('#mec_skin_masonry_start_date_container').show(); else jQuery('#mec_skin_masonry_start_date_container').hide();">
798
  <option value="today" <?php if(isset($sk_options_masonry['start_date_type']) and $sk_options_masonry['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
799
  <option value="tomorrow" <?php if(isset($sk_options_masonry['start_date_type']) and $sk_options_masonry['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
800
  <option value="start_current_month" <?php if(isset($sk_options_masonry['start_date_type']) and $sk_options_masonry['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
823
  </div>
824
  <div class="mec-form-row">
825
  <label class="mec-col-4" for="mec_skin_masonry_filter_by"><?php _e('Filter By', 'modern-events-calendar-lite'); ?></label>
826
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][masonry][filter_by]" id="mec_skin_masonry_filter_by">
827
  <option value="" <?php if(isset($sk_options_masonry['filter_by']) and $sk_options_masonry['filter_by'] == '') echo 'selected="selected"'; ?>><?php _e('None', 'modern-events-calendar-lite'); ?></option>
828
  <option value="category" <?php if(isset($sk_options_masonry['filter_by']) and $sk_options_masonry['filter_by'] == 'category') echo 'selected="selected"'; ?>><?php _e('Category', 'modern-events-calendar-lite'); ?></option>
829
  <option value="label" <?php if(isset($sk_options_masonry['filter_by']) and $sk_options_masonry['filter_by'] == 'label') echo 'selected="selected"'; ?>><?php _e('Label', 'modern-events-calendar-lite'); ?></option>
871
  <?php $sk_options_cover = isset($sk_options['cover']) ? $sk_options['cover'] : array(); ?>
872
  <div class="mec-form-row">
873
  <label class="mec-col-4" for="mec_skin_cover_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
874
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][cover][style]" id="mec_skin_cover_style" onchange="mec_skin_style_changed('cover', this.value);">
875
  <option value="classic" <?php if(isset($sk_options_cover['style']) and $sk_options_cover['style'] == 'classic') echo 'selected="selected"'; ?>><?php _e('Classic', 'modern-events-calendar-lite'); ?></option>
876
  <option value="clean" <?php if(isset($sk_options_cover['style']) and $sk_options_cover['style'] == 'clean') echo 'selected="selected"'; ?>><?php _e('Clean', 'modern-events-calendar-lite'); ?></option>
877
  <option value="modern" <?php if(isset($sk_options_cover['style']) and $sk_options_cover['style'] == 'modern') echo 'selected="selected"'; ?>><?php _e('Modern', 'modern-events-calendar-lite'); ?></option>
915
  </div>
916
  <div class="mec-form-row">
917
  <label class="mec-col-4" for="mec_skin_cover_event_id"><?php _e('Event', 'modern-events-calendar-lite'); ?></label>
918
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][cover][event_id]" id="mec_skin_cover_event_id">
919
  <?php foreach($events as $event): ?>
920
  <option value="<?php echo $event->ID; ?>" <?php if(isset($sk_options_cover['event_id']) and $sk_options_cover['event_id'] == $event->ID) echo 'selected="selected"'; ?>><?php echo $event->post_title; ?></option>
921
  <?php endforeach; ?>
928
  <?php $sk_options_countdown = isset($sk_options['countdown']) ? $sk_options['countdown'] : array(); ?>
929
  <div class="mec-form-row">
930
  <label class="mec-col-4" for="mec_skin_countdown_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
931
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][countdown][style]" id="mec_skin_countdown_style" onchange="mec_skin_style_changed('countdown', this.value);">
932
  <option value="style1" <?php if(isset($sk_options_countdown['style']) and $sk_options_countdown['style'] == 'style1') echo 'selected="selected"'; ?>><?php _e('Style 1', 'modern-events-calendar-lite'); ?></option>
933
  <option value="style2" <?php if(isset($sk_options_countdown['style']) and $sk_options_countdown['style'] == 'style2') echo 'selected="selected"'; ?>><?php _e('Style 2', 'modern-events-calendar-lite'); ?></option>
934
  <option value="style3" <?php if(isset($sk_options_countdown['style']) and $sk_options_countdown['style'] == 'style3') echo 'selected="selected"'; ?>><?php _e('Style 3', 'modern-events-calendar-lite'); ?></option>
971
  </div>
972
  <div class="mec-form-row">
973
  <label class="mec-col-4" for="mec_skin_countdown_event_id"><?php _e('Event', 'modern-events-calendar-lite'); ?></label>
974
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][countdown][event_id]" id="mec_skin_countdown_event_id">
975
  <option value="-1" <?php if(isset($sk_options_countdown['event_id']) and $sk_options_countdown['event_id'] == '-1') echo 'selected="selected"'; ?>><?php echo __(' -- Next Upcoming Event -- ', 'modern-events-calendar-lite') ?></option>
976
  <?php foreach($events as $event): ?>
977
  <option value="<?php echo $event->ID; ?>" <?php if(isset($sk_options_countdown['event_id']) and $sk_options_countdown['event_id'] == $event->ID) echo 'selected="selected"'; ?>><?php echo $event->post_title; ?></option>
1006
  </div>
1007
  <div class="mec-form-row">
1008
  <label class="mec-col-4" for="mec_skin_available_spot_event_id"><?php _e('Event', 'modern-events-calendar-lite'); ?></label>
1009
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][available_spot][event_id]" id="mec_skin_available_spot_event_id">
1010
  <option value="-1" <?php if(isset($sk_options_available_spot['event_id']) and $sk_options_available_spot['event_id'] == '-1') echo 'selected="selected"'; ?>><?php echo __(' -- Next Upcoming Event -- ', 'modern-events-calendar-lite') ?></option>
1011
  <?php foreach($events as $event): ?>
1012
  <option value="<?php echo $event->ID; ?>" <?php if(isset($sk_options_available_spot['event_id']) and $sk_options_available_spot['event_id'] == $event->ID) echo 'selected="selected"'; ?>><?php echo $event->post_title; ?></option>
1020
  <?php $sk_options_carousel = isset($sk_options['carousel']) ? $sk_options['carousel'] : array(); ?>
1021
  <div class="mec-form-row">
1022
  <label class="mec-col-4" for="mec_skin_carousel_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
1023
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][carousel][style]" id="mec_skin_carousel_style" onchange="mec_skin_style_changed('carousel', this.value); if(this.value == 'type4'){ jQuery('.mec-carousel-archive-link').show();jQuery('.mec-carousel-head-text').show();} else { jQuery('.mec-carousel-archive-link').hide(); jQuery('.mec-carousel-head-text').hide(); }">
1024
  <option value="type1" <?php if(isset($sk_options_carousel['style']) and $sk_options_carousel['style'] == 'type1') echo 'selected="selected"'; ?>><?php _e('Type 1', 'modern-events-calendar-lite'); ?></option>
1025
  <option value="type2" <?php if(isset($sk_options_carousel['style']) and $sk_options_carousel['style'] == 'type2') echo 'selected="selected"'; ?>><?php _e('Type 2', 'modern-events-calendar-lite'); ?></option>
1026
  <option value="type3" <?php if(isset($sk_options_carousel['style']) and $sk_options_carousel['style'] == 'type3') echo 'selected="selected"'; ?>><?php _e('Type 3', 'modern-events-calendar-lite'); ?></option>
1029
  </div>
1030
  <div class="mec-form-row">
1031
  <label class="mec-col-4" for="mec_skin_carousel_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
1032
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][carousel][start_date_type]" id="mec_skin_carousel_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_carousel_start_date_container').show(); else jQuery('#mec_skin_carousel_start_date_container').hide();">
1033
  <option value="today" <?php if(isset($sk_options_carousel['start_date_type']) and $sk_options_carousel['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
1034
  <option value="tomorrow" <?php if(isset($sk_options_carousel['start_date_type']) and $sk_options_carousel['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
1035
  <option value="start_current_month" <?php if(isset($sk_options_carousel['start_date_type']) and $sk_options_carousel['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
1077
  </div>
1078
  <div class="mec-form-row">
1079
  <label class="mec-col-4" for="mec_skin_carousel_count"><?php _e('Count in row', 'modern-events-calendar-lite'); ?></label>
1080
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][carousel][count]" id="mec_skin_carousel_count">
1081
  <option value="2" <?php echo (isset($sk_options_carousel['count']) and $sk_options_carousel['count'] == 2) ? 'selected="selected"' : ''; ?>>2</option>
1082
  <option value="3" <?php echo (isset($sk_options_carousel['count']) and $sk_options_carousel['count'] == 3) ? 'selected="selected"' : ''; ?>>3</option>
1083
  <option value="4" <?php echo (isset($sk_options_carousel['count']) and $sk_options_carousel['count'] == 4) ? 'selected="selected"' : ''; ?>>4</option>
1106
  <?php $sk_options_slider = isset($sk_options['slider']) ? $sk_options['slider'] : array(); ?>
1107
  <div class="mec-form-row">
1108
  <label class="mec-col-4" for="mec_skin_slider_style"><?php _e('Style', 'modern-events-calendar-lite'); ?></label>
1109
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][slider][style]" id="mec_skin_slider_style" onchange="mec_skin_style_changed('slider', this.value);">
1110
  <option value="t1" <?php if(isset($sk_options_slider['style']) and $sk_options_slider['style'] == 't1') echo 'selected="selected"'; ?>><?php _e('Type 1', 'modern-events-calendar-lite'); ?></option>
1111
  <option value="t2" <?php if(isset($sk_options_slider['style']) and $sk_options_slider['style'] == 't2') echo 'selected="selected"'; ?>><?php _e('Type 2', 'modern-events-calendar-lite'); ?></option>
1112
  <option value="t3" <?php if(isset($sk_options_slider['style']) and $sk_options_slider['style'] == 't3') echo 'selected="selected"'; ?>><?php _e('Type 3', 'modern-events-calendar-lite'); ?></option>
1116
  </div>
1117
  <div class="mec-form-row">
1118
  <label class="mec-col-4" for="mec_skin_slider_start_date_type"><?php _e('Start Date', 'modern-events-calendar-lite'); ?></label>
1119
+ <select class="mec-col-4 wn-mec-select" name="mec[sk-options][slider][start_date_type]" id="mec_skin_slider_start_date_type" onchange="if(this.value == 'date') jQuery('#mec_skin_slider_start_date_container').show(); else jQuery('#mec_skin_slider_start_date_container').hide();">
1120
  <option value="today" <?php if(isset($sk_options_slider['start_date_type']) and $sk_options_slider['start_date_type'] == 'today') echo 'selected="selected"'; ?>><?php _e('Today', 'modern-events-calendar-lite'); ?></option>
1121
  <option value="tomorrow" <?php if(isset($sk_options_slider['start_date_type']) and $sk_options_slider['start_date_type'] == 'tomorrow') echo 'selected="selected"'; ?>><?php _e('Tomorrow', 'modern-events-calendar-lite'); ?></option>
1122
  <option value="start_current_month" <?php if(isset($sk_options_slider['start_date_type']) and $sk_options_slider['start_date_type'] == 'start_current_month') echo 'selected="selected"'; ?>><?php _e('Start of Current Month', 'modern-events-calendar-lite'); ?></option>
1206
  <?php do_action('mec_skin_options', $sk_options); ?>
1207
  </div>
1208
  </div>
1209
+ </div>
1210
+
1211
+ <script>
1212
+ // Niceselect
1213
+ jQuery(document).ready(function() {
1214
+ jQuery('.mec-custom-nice-select').find('li').each( function(index, elemement) {
1215
+ var $this = jQuery(this),
1216
+ $name = $this.text();
1217
+ $this.text('');
1218
+ $this.append('<span class="wn-mec-text">'+$name+'</span>');
1219
+ });
1220
+ jQuery('.mec-custom-nice-select li[data-value="list"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/list.svg" /></div>');
1221
+ jQuery('.mec-custom-nice-select li[data-value="grid"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/grid.svg" /></div>');
1222
+ jQuery('.mec-custom-nice-select li[data-value="agenda"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/agenda.svg" /></div>');
1223
+ jQuery('.mec-custom-nice-select li[data-value="full_calendar"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/full_calendar.svg" /></div>');
1224
+ jQuery('.mec-custom-nice-select li[data-value="yearly_view"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/yearly.svg" /></div>');
1225
+ jQuery('.mec-custom-nice-select li[data-value="monthly_view"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/monthly.svg" /></div>');
1226
+ jQuery('.mec-custom-nice-select li[data-value="daily_view"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/daily.svg" /></div>');
1227
+ jQuery('.mec-custom-nice-select li[data-value="weekly_view"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/weekly.svg" /></div>');
1228
+ jQuery('.mec-custom-nice-select li[data-value="timetable"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/timetable.svg" /></div>');
1229
+ jQuery('.mec-custom-nice-select li[data-value="masonry"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/masonry.svg" /></div>');
1230
+ jQuery('.mec-custom-nice-select li[data-value="map"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/map.svg" /></div>');
1231
+ jQuery('.mec-custom-nice-select li[data-value="cover"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/cover.svg" /></div>');
1232
+ jQuery('.mec-custom-nice-select li[data-value="countdown"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/countdown.svg" /></div>');
1233
+ jQuery('.mec-custom-nice-select li[data-value="available_spot"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/available_spot.svg" /></div>');
1234
+ jQuery('.mec-custom-nice-select li[data-value="carousel"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/carousel.svg" /></div>');
1235
+ jQuery('.mec-custom-nice-select li[data-value="slider"]').prepend('<div class="wn-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/slider.svg" /></div>');
1236
+
1237
+ /** List View Skins */
1238
+ jQuery('#mec_list_skin_options_container .mec-form-row .nice-select .list li[data-value="classic"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/list/list-classic.png" /></span>');
1239
+ jQuery('#mec_list_skin_options_container .mec-form-row .nice-select .list li[data-value="minimal"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/list/list-minimal.png" /></span>');
1240
+ jQuery('#mec_list_skin_options_container .mec-form-row .nice-select .list li[data-value="modern"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/list/list-modern.png" /></span>');
1241
+ jQuery('#mec_list_skin_options_container .mec-form-row .nice-select .list li[data-value="standard"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/list/list-standard.png" /></span>');
1242
+ jQuery('#mec_list_skin_options_container .mec-form-row .nice-select .list li[data-value="accordion"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/list/list-accordion.png" /></span>');
1243
+
1244
+ /** Grid View Skins */
1245
+ jQuery('#mec_grid_skin_options_container .mec-form-row .nice-select .list li[data-value="classic"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/grid/grid-classic.png" /></span>');
1246
+ jQuery('#mec_grid_skin_options_container .mec-form-row .nice-select .list li[data-value="clean"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/grid/grid-clean.png" /></span>');
1247
+ jQuery('#mec_grid_skin_options_container .mec-form-row .nice-select .list li[data-value="minimal"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/grid/grid-minimal.png" /></span>');
1248
+ jQuery('#mec_grid_skin_options_container .mec-form-row .nice-select .list li[data-value="modern"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/grid/grid-modern.png" /></span>');
1249
+ jQuery('#mec_grid_skin_options_container .mec-form-row .nice-select .list li[data-value="simple"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/grid/grid-simple.png" /></span>');
1250
+ jQuery('#mec_grid_skin_options_container .mec-form-row .nice-select .list li[data-value="colorful"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/grid/grid-colorful.png" /></span>');
1251
+ jQuery('#mec_grid_skin_options_container .mec-form-row .nice-select .list li[data-value="novel"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/grid/grid-novel.png" /></span>');
1252
+
1253
+ /** Agenda View Skins */
1254
+ jQuery('#mec_agenda_skin_options_container .mec-form-row .nice-select .list li[data-value="clean"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/agenda/agenda-clean.png" /></span>');
1255
+
1256
+ /** FullCalendar View Skins */
1257
+ jQuery('#mec_full_calendar_skin_options_container .mec-form-row .nice-select .list li[data-value="list"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/full-calendar/full-calendar-list.png" /></span>');
1258
+ jQuery('#mec_full_calendar_skin_options_container .mec-form-row .nice-select .list li[data-value="daily"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/full-calendar/full-calendar-daily.png" /></span>');
1259
+ jQuery('#mec_full_calendar_skin_options_container .mec-form-row .nice-select .list li[data-value="weekly"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/full-calendar/full-calendar-weekly.png" /></span>');
1260
+ jQuery('#mec_full_calendar_skin_options_container .mec-form-row .nice-select .list li[data-value="monthly"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/full-calendar/full-calendar-monthly.png" /></span>');
1261
+ jQuery('#mec_full_calendar_skin_options_container .mec-form-row .nice-select .list li[data-value="yearly"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/full-calendar/full-calendar-yearly.png" /></span>');
1262
+
1263
+ /** Yearly View Skins */
1264
+ jQuery('#mec_yearly_view_skin_options_container .mec-form-row .nice-select .list li[data-value="modern"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/yearly/yearly-modern.png" /></span>');
1265
+
1266
+ /** Monthly View Skins */
1267
+ jQuery('#mec_monthly_view_skin_options_container .mec-form-row .nice-select .list li[data-value="classic"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/monthly/monthly-classic.png" /></span>');
1268
+ jQuery('#mec_monthly_view_skin_options_container .mec-form-row .nice-select .list li[data-value="clean"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/monthly/monthly-clean.png" /></span>');
1269
+ jQuery('#mec_monthly_view_skin_options_container .mec-form-row .nice-select .list li[data-value="modern"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/monthly/monthly-modern.png" /></span>');
1270
+ jQuery('#mec_monthly_view_skin_options_container .mec-form-row .nice-select .list li[data-value="novel"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/monthly/monthly-novel.png" /></span>');
1271
+ jQuery('#mec_monthly_view_skin_options_container .mec-form-row .nice-select .list li[data-value="simple"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/monthly/monthly-simple.png" /></span>');
1272
+
1273
+ /** Time Table View Skins */
1274
+ jQuery('#mec_timetable_skin_options_container .mec-form-row .nice-select .list li[data-value="modern"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/time-table/time-table-modern.png" /></span>');
1275
+ jQuery('#mec_timetable_skin_options_container .mec-form-row .nice-select .list li[data-value="clean"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/time-table/time-table-clean.png" /></span>');
1276
+
1277
+ /** Cover View Skins */
1278
+ jQuery('#mec_cover_skin_options_container .mec-form-row .nice-select .list li[data-value="classic"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/cover/cover-classic.png" /></span>');
1279
+ jQuery('#mec_cover_skin_options_container .mec-form-row .nice-select .list li[data-value="clean"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/cover/cover-clean.png" /></span>');
1280
+ jQuery('#mec_cover_skin_options_container .mec-form-row .nice-select .list li[data-value="modern"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/cover/cover-modern.png" /></span>');
1281
+
1282
+ /** Countdown View Skins */
1283
+ jQuery('#mec_countdown_skin_options_container .mec-form-row .nice-select .list li[data-value="style1"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/countdown/countdown-type-1.png" /></span>');
1284
+ jQuery('#mec_countdown_skin_options_container .mec-form-row .nice-select .list li[data-value="style2"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/countdown/countdown-type-2.png" /></span>');
1285
+ jQuery('#mec_countdown_skin_options_container .mec-form-row .nice-select .list li[data-value="style3"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/countdown/countdown-type-3.png" /></span>');
1286
+
1287
+ /** Carousel View Skins */
1288
+ jQuery('#mec_carousel_skin_options_container .mec-form-row .nice-select .list li[data-value="type1"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/carousel/carousel-type-1.png" /></span>');
1289
+ jQuery('#mec_carousel_skin_options_container .mec-form-row .nice-select .list li[data-value="type2"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/carousel/carousel-type-2.png" /></span>');
1290
+ jQuery('#mec_carousel_skin_options_container .mec-form-row .nice-select .list li[data-value="type3"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/carousel/carousel-type-3.png" /></span>');
1291
+ jQuery('#mec_carousel_skin_options_container .mec-form-row .nice-select .list li[data-value="type4"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/carousel/carousel-type-4.png" /></span>');
1292
+
1293
+ /** slider View Skins */
1294
+ jQuery('#mec_slider_skin_options_container .mec-form-row .nice-select .list li[data-value="t1"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/slider/slider-type-1.png" /></span>');
1295
+ jQuery('#mec_slider_skin_options_container .mec-form-row .nice-select .list li[data-value="t2"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/slider/slider-type-2.png" /></span>');
1296
+ jQuery('#mec_slider_skin_options_container .mec-form-row .nice-select .list li[data-value="t3"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/slider/slider-type-3.png" /></span>');
1297
+ jQuery('#mec_slider_skin_options_container .mec-form-row .nice-select .list li[data-value="t4"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/slider/slider-type-4.png" /></span>');
1298
+ jQuery('#mec_slider_skin_options_container .mec-form-row .nice-select .list li[data-value="t5"]').append('<span class="wn-hover-img-sh"><img src="https://webnus.net/modern-events-calendar/wp-content/skins/slider/slider-type-5.png" /></span>');
1299
+
1300
+ });
1301
+ </script>
app/features/mec/notifications.php CHANGED
@@ -11,203 +11,7 @@ $notifications = $this->main->get_notifications();
11
  </div>
12
 
13
  <div class="wns-be-sidebar">
14
-
15
- <ul class="wns-be-group-menu">
16
-
17
- <li class="wns-be-group-menu-li has-sub">
18
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>" id="" class="wns-be-group-tab-link-a">
19
- <span class="extra-icon">
20
- <i class="sl-arrow-down"></i>
21
- </span>
22
- <i class="mec-sl-settings"></i>
23
- <span class="wns-be-group-menu-title"><?php _e('Settings', 'modern-events-calendar-lite'); ?></span>
24
- </a>
25
- <ul id="" class="submneu-hover">
26
- <li class="submenu-item">
27
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#general_option"><?php _e('General Options', 'modern-events-calendar-lite'); ?></a>
28
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#archive_options"><?php _e('Archive Pages', 'modern-events-calendar-lite'); ?></a>
29
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#slug_option"><?php _e('Slugs/Permalinks', 'modern-events-calendar-lite'); ?></a>
30
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#currency_option"><?php _e('Currency Options', 'modern-events-calendar-lite'); ?></a>
31
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#recaptcha_option"><?php _e('Google Recaptcha Options', 'modern-events-calendar-lite'); ?></a>
32
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#fes_option"><?php _e('Frontend Event Submission', 'modern-events-calendar-lite'); ?></a>
33
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#user_profile_options"><?php _e('User Profile', 'modern-events-calendar-lite'); ?></a>
34
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#search_bar_options"><?php _e('Search Bar', 'modern-events-calendar-lite'); ?></a>
35
- <?php if($this->main->getPRO()): ?>
36
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#mailchimp_option"><?php _e('Mailchimp Integration', 'modern-events-calendar-lite'); ?></a>
37
- <?php endif; ?>
38
- <a href="<?php echo $this->main->remove_qs_var('tab'); ?>#uploadfield_option"><?php _e('Upload Field', 'modern-events-calendar-lite'); ?></a>
39
- </li>
40
- </ul>
41
- </li>
42
-
43
- <li class="wns-be-group-menu-li">
44
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-single'); ?>" id="" class="wns-be-group-tab-link-a">
45
- <i class="mec-sl-note"></i>
46
- <span class="wns-be-group-menu-title"><?php echo __('Single Event', 'modern-events-calendar-lite'); ?></span>
47
- </a>
48
- <ul id="" class="submneu-hover">
49
- <li class="submenu-item">
50
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-single'); ?>#event_options"><?php _e('Single Event Page', 'modern-events-calendar-lite'); ?></a>
51
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-single'); ?>#countdown_option"><?php _e('Countdown Options', 'modern-events-calendar-lite'); ?></a>
52
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-single'); ?>#exceptional_option"><?php _e('Exceptional Days', 'modern-events-calendar-lite'); ?></a>
53
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-single'); ?>#additional_organizers"><?php _e('Additional Organizers', 'modern-events-calendar-lite'); ?></a>
54
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-single'); ?>#additional_locations"><?php _e('Additional Locations', 'modern-events-calendar-lite'); ?></a>
55
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-single'); ?>#related_events"><?php _e('Related Events', 'modern-events-calendar-lite'); ?></a>
56
- </li>
57
- </ul>
58
- </li>
59
-
60
- <?php if($this->main->getPRO()): ?>
61
-
62
- <li class="wns-be-group-menu-li">
63
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-booking'); ?>" id="" class="wns-be-group-tab-link-a">
64
- <i class="mec-sl-credit-card"></i>
65
- <span class="wns-be-group-menu-title"><?php echo __('Booking', 'modern-events-calendar-lite'); ?></span>
66
- </a>
67
- <ul id="" class="submneu-hover">
68
- <li class="submenu-item">
69
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-booking'); ?>#booking_option"><?php _e('Booking', 'modern-events-calendar-lite'); ?></a>
70
- <?php if(isset($this->settings['booking_status']) and $this->settings['booking_status']): ?>
71
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-booking'); ?>#coupon_option"><?php _e('Coupons', 'modern-events-calendar-lite'); ?></a>
72
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-booking'); ?>#taxes_option"><?php _e('Taxes / Fees', 'modern-events-calendar-lite'); ?></a>
73
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-booking'); ?>#ticket_variations_option"><?php _e('Ticket Variations & Options', 'modern-events-calendar-lite'); ?></a>
74
- <?php endif; ?>
75
- </li>
76
- </ul>
77
- </li>
78
-
79
- <?php endif; ?>
80
-
81
- <li class="wns-be-group-menu-li">
82
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>" id="" class="wns-be-group-tab-link-a">
83
- <i class="mec-sl-grid"></i>
84
- <span class="wns-be-group-menu-title"><?php echo __('Modules', 'modern-events-calendar-lite'); ?></span>
85
- </a>
86
- <ul id="" class="submneu-hover">
87
- <li class="submenu-item">
88
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#speakers_option"><?php _e('Speakers', 'modern-events-calendar-lite'); ?></a>
89
- <?php if($this->main->getPRO()): ?>
90
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#googlemap_option"><?php _e('Google Maps Options', 'modern-events-calendar-lite'); ?></a>
91
- <?php endif; ?>
92
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#export_module_option"><?php _e('Export Options', 'modern-events-calendar-lite'); ?></a>
93
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#time_module_option"><?php _e('Local Time', 'modern-events-calendar-lite'); ?></a>
94
- <?php if($this->main->getPRO()): ?>
95
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#qrcode_module_option"><?php _e('QR Code', 'modern-events-calendar-lite'); ?></a>
96
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#weather_module_option"><?php _e('Weather', 'modern-events-calendar-lite'); ?></a>
97
- <?php endif; ?>
98
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#social_options"><?php _e('Social Networks', 'modern-events-calendar-lite'); ?></a>
99
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#next_event_option"><?php _e('Next Event', 'modern-events-calendar-lite'); ?></a>
100
- <?php if($this->main->getPRO()): ?>
101
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-modules'); ?>#buddy_option"><?php _e('BuddyPress Integration', 'modern-events-calendar-lite'); ?></a>
102
- <?php endif; ?>
103
- </li>
104
- </ul>
105
- </li>
106
-
107
- <?php if($this->main->getPRO() and isset($this->settings['booking_status']) and $this->settings['booking_status']): ?>
108
-
109
- <li class="wns-be-group-menu-li">
110
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-reg-form'); ?>" id="" class="wns-be-group-tab-link-a">
111
- <i class="mec-sl-layers"></i>
112
- <span class="wns-be-group-menu-title"><?php _e('Booking Form', 'modern-events-calendar-lite'); ?></span>
113
- </a>
114
- </li>
115
-
116
- <li class="wns-be-group-menu-li">
117
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-gateways'); ?>" id="" class="wns-be-group-tab-link-a">
118
- <i class="mec-sl-wallet"></i>
119
- <span class="wns-be-group-menu-title"><?php _e('Payment Gateways', 'modern-events-calendar-lite'); ?></span>
120
- </a>
121
- </li>
122
-
123
- <?php endif;?>
124
-
125
- <li class="wns-be-group-menu-li active">
126
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-notifications'); ?>" id="" class="wns-be-group-tab-link-a">
127
- <span class="extra-icon">
128
- <i class="mec-sl-arrow-down"></i>
129
- </span>
130
- <i class="mec-sl-envelope"></i>
131
- <span class="wns-be-group-menu-title"><?php _e('Notifications', 'modern-events-calendar-lite'); ?></span>
132
- </a>
133
-
134
- <ul id="" class="subsection" style="display: block;">
135
- <?php if($this->main->getPRO() and isset($this->settings['booking_status']) and $this->settings['booking_status']): ?>
136
- <li id="" class="pr-be-group-menu-li active">
137
- <a data-id="booking_notification" class="wns-be-group-tab-link-a WnTabLinks">
138
- <span class="pr-be-group-menu-title"><?php _e('Booking', 'modern-events-calendar-lite'); ?></span>
139
- </a>
140
- </li>
141
-
142
- <li id="" class="pr-be-group-menu-li">
143
- <a data-id="booking_verification" class="wns-be-group-tab-link-a WnTabLinks">
144
- <span class="pr-be-group-menu-title"><?php _e('Booking Verification', 'modern-events-calendar-lite'); ?></span>
145
- </a>
146
- </li>
147
-
148
- <li id="" class="pr-be-group-menu-li">
149
- <a data-id="booking_confirmation" class="wns-be-group-tab-link-a WnTabLinks">
150
- <span class="pr-be-group-menu-title"><?php _e('Booking Confirmation', 'modern-events-calendar-lite'); ?></span>
151
- </a>
152
- </li>
153
-
154
- <li id="" class="pr-be-group-menu-li">
155
- <a data-id="cancellation_notification" class="wns-be-group-tab-link-a WnTabLinks">
156
- <span class="pr-be-group-menu-title"><?php _e('Booking Cancellation', 'modern-events-calendar-lite'); ?></span>
157
- </a>
158
- </li>
159
-
160
- <li id="" class="pr-be-group-menu-li">
161
- <a data-id="admin_notification" class="wns-be-group-tab-link-a WnTabLinks">
162
- <span class="pr-be-group-menu-title"><?php _e('Admin', 'modern-events-calendar-lite'); ?></span>
163
- </a>
164
- </li>
165
-
166
- <li id="" class="pr-be-group-menu-li">
167
- <a data-id="booking_reminder" class="wns-be-group-tab-link-a WnTabLinks">
168
- <span class="pr-be-group-menu-title"><?php _e('Booking Reminder', 'modern-events-calendar-lite'); ?></span>
169
- </a>
170
- </li>
171
- <?php endif;?>
172
- <li id="" class="pr-be-group-menu-li <?php if($this->settings['booking_status'] == 0) echo 'active'; ?>">
173
- <a data-id="new_event" class="wns-be-group-tab-link-a WnTabLinks">
174
- <span class="pr-be-group-menu-title"><?php _e('New Event', 'modern-events-calendar-lite'); ?></span>
175
- </a>
176
- </li>
177
-
178
- </ul>
179
-
180
- </li>
181
-
182
- <li class="wns-be-group-menu-li">
183
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-styling'); ?>" id="" class="wns-be-group-tab-link-a">
184
- <i class="mec-sl-equalizer"></i>
185
- <span class="wns-be-group-menu-title"><?php _e('Styling Options', 'modern-events-calendar-lite'); ?></span>
186
- </a>
187
- </li>
188
-
189
- <li class="wns-be-group-menu-li">
190
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-customcss'); ?>" id="" class="wns-be-group-tab-link-a">
191
- <i class="mec-sl-wrench"></i>
192
- <span class="wns-be-group-menu-title"><?php _e('Custom CSS', 'modern-events-calendar-lite'); ?></span>
193
- </a>
194
- </li>
195
-
196
- <li class="wns-be-group-menu-li">
197
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-messages'); ?>" id="" class="wns-be-group-tab-link-a">
198
- <i class="mec-sl-bubble"></i>
199
- <span class="wns-be-group-menu-title"><?php _e('Messages', 'modern-events-calendar-lite'); ?></span>
200
- </a>
201
- </li>
202
-
203
- <li class="wns-be-group-menu-li">
204
- <a href="<?php echo $this->main->add_qs_var('tab', 'MEC-ie'); ?>" id="" class="wns-be-group-tab-link-a">
205
- <i class="mec-sl-refresh"></i>
206
- <span class="wns-be-group-menu-title"><?php _e('Import / Export', 'modern-events-calendar-lite'); ?></span>
207
- </a>
208
- </li>
209
-
210
- </ul>
211
  </div>
212
 
213
 
11
  </div>
12
 
13
  <div class="wns-be-sidebar">
14
+ <?php $this->main->get_sidebar_menu('notifications'); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  </div>
16
 
17
 
app/features/mec/regform.php CHANGED
@@ -1,236 +1,4 @@
1
  <?php
2
  /** no direct access **/
3
- defined( 'MECEXEC' ) or die();
4
-
5
- $mec_email = false;
6
- $mec_name = false;
7
- $reg_fields = $this->main->get_reg_fields();
8
- if(!is_array($reg_fields)) $reg_fields = array();
9
-
10
- foreach($reg_fields as $field)
11
- {
12
- if(isset($field['type']))
13
- {
14
- if($field['type'] == 'name') $mec_name = true;
15
- if($field['type'] == 'mec_email') $mec_email = true;
16
- }
17
- else break;
18
- }
19
-
20
- if(!$mec_name)
21
- {
22
- array_unshift(
23
- $reg_fields,
24
- array(
25
- 'mandatory' => '0',
26
- 'type' => 'name',
27
- 'label' => esc_html__('Name', 'modern-events-calendar-lite'),
28
- )
29
- );
30
- }
31
-
32
- if(!$mec_email)
33
- {
34
- array_unshift(
35
- $reg_fields,
36
- array(
37
- 'mandatory' => '0',
38
- 'type' => 'mec_email',
39
- 'label' => esc_html__('Email', 'modern-events-calendar-lite'),
40
- )
41
- );
42
- }
43
- ?>
44
- <?php do_action( 'mec_reg_form_start' ); ?>
45
- <div class="wns-be-container wns-be-container-sticky">
46
-
47
- <div id="wns-be-infobar">
48
- <a href="" id="" class="dpr-btn dpr-save-btn"><?php _e( 'Save Changes', 'modern-events-calendar-lite' ); ?></a>
49
- </div>
50
-
51
- <div class="wns-be-sidebar">
52
- <?php $this->main->get_sidebar_menu('reg_form'); ?>
53
- </div>
54
-
55
- <div class="wns-be-main">
56
-
57
- <div id="wns-be-notification"></div>
58
-
59
- <div id="wns-be-content">
60
- <div class="wns-be-group-tab">
61
- <h2><?php _e( 'Booking Form', 'modern-events-calendar-lite' ); ?></h2>
62
- <div class="mec-container">
63
- <?php do_action( 'before_mec_reg_fields_form' ); ?>
64
- <form id="mec_reg_fields_form">
65
- <?php do_action( 'mec_reg_fields_form_start' ); ?>
66
- <div class="mec-form-row" id="mec_reg_form_container">
67
- <?php /** Don't remove this hidden field **/ ?>
68
- <input type="hidden" name="mec[reg_fields]" value="" />
69
-
70
- <ul id="mec_reg_form_fields">
71
- <?php
72
- $i = 0;
73
- foreach ( $reg_fields as $key => $reg_field ) {
74
- if ( ! is_numeric( $key ) ) {
75
- continue;
76
- }
77
- $i = max( $i, $key );
78
-
79
- if ( $reg_field['type'] == 'text' ) {
80
- echo $this->main->field_text( $key, $reg_field );
81
- } elseif ( $reg_field['type'] == 'name' ) {
82
- echo $this->main->field_name( $key, $reg_field );
83
- } elseif ( $reg_field['type'] == 'mec_email' ) {
84
- echo $this->main->field_mec_email( $key, $reg_field );
85
- } elseif ( $reg_field['type'] == 'email' ) {
86
- echo $this->main->field_email( $key, $reg_field );
87
- } elseif ( $reg_field['type'] == 'date' ) {
88
- echo $this->main->field_date( $key, $reg_field );
89
- } elseif ( $reg_field['type'] == 'file' ) {
90
- echo $this->main->field_file( $key, $reg_field );
91
- } elseif ( $reg_field['type'] == 'tel' ) {
92
- echo $this->main->field_tel( $key, $reg_field );
93
- } elseif ( $reg_field['type'] == 'textarea' ) {
94
- echo $this->main->field_textarea( $key, $reg_field );
95
- } elseif ( $reg_field['type'] == 'p' ) {
96
- echo $this->main->field_p( $key, $reg_field );
97
- } elseif ( $reg_field['type'] == 'checkbox' ) {
98
- echo $this->main->field_checkbox( $key, $reg_field );
99
- } elseif ( $reg_field['type'] == 'radio' ) {
100
- echo $this->main->field_radio( $key, $reg_field );
101
- } elseif ( $reg_field['type'] == 'select' ) {
102
- echo $this->main->field_select( $key, $reg_field );
103
- } elseif ( $reg_field['type'] == 'agreement' ) {
104
- echo $this->main->field_agreement( $key, $reg_field );
105
- }
106
- }
107
- ?>
108
- </ul>
109
- <div id="mec_reg_form_field_types">
110
- <button type="button" class="button red" data-type="name"><?php _e( 'MEC Name', 'modern-events-calendar-lite' ); ?></button>
111
- <button type="button" class="button red" data-type="mec_email"><?php _e( 'MEC Email', 'modern-events-calendar-lite' ); ?></button>
112
- <button type="button" class="button" data-type="text"><?php _e( 'Text', 'modern-events-calendar-lite' ); ?></button>
113
- <button type="button" class="button" data-type="email"><?php _e( 'Email', 'modern-events-calendar-lite' ); ?></button>
114
- <button type="button" class="button" data-type="date"><?php _e( 'Date', 'modern-events-calendar-lite' ); ?></button>
115
- <button type="button" class="button" data-type="tel"><?php _e( 'Tel', 'modern-events-calendar-lite' ); ?></button>
116
- <button type="button" class="button" data-type="file"><?php _e( 'File', 'modern-events-calendar-lite' ); ?></button>
117
- <button type="button" class="button" data-type="textarea"><?php _e( 'Textarea', 'modern-events-calendar-lite' ); ?></button>
118
- <button type="button" class="button" data-type="checkbox"><?php _e( 'Checkboxes', 'modern-events-calendar-lite' ); ?></button>
119
- <button type="button" class="button" data-type="radio"><?php _e( 'Radio Buttons', 'modern-events-calendar-lite' ); ?></button>
120
- <button type="button" class="button" data-type="select"><?php _e( 'Dropdown', 'modern-events-calendar-lite' ); ?></button>
121
- <button type="button" class="button" data-type="agreement"><?php _e( 'Agreement', 'modern-events-calendar-lite' ); ?></button>
122
- <button type="button" class="button" data-type="p"><?php _e( 'Paragraph', 'modern-events-calendar-lite' ); ?></button>
123
- </div>
124
- <?php do_action( 'mec_reg_fields_form_end' ); ?>
125
- </div>
126
- <div class="mec-form-row">
127
- <?php wp_nonce_field( 'mec_options_form' ); ?>
128
- <button style="display: none;" id="mec_reg_fields_form_button" class="button button-primary mec-button-primary" type="submit"><?php _e( 'Save Changes', 'modern-events-calendar-lite' ); ?></button>
129
- </div>
130
- </form>
131
- <?php do_action( 'after_mec_reg_fields_form' ); ?>
132
- </div>
133
- <input type="hidden" id="mec_new_reg_field_key" value="<?php echo $i + 1; ?>" />
134
- <div class="mec-util-hidden">
135
- <div id="mec_reg_field_text">
136
- <?php echo $this->main->field_text( ':i:' ); ?>
137
- </div>
138
- <div id="mec_reg_field_email">
139
- <?php echo $this->main->field_email( ':i:' ); ?>
140
- </div>
141
- <div id="mec_reg_field_mec_email">
142
- <?php echo $this->main->field_mec_email( ':i:' ); ?>
143
- </div>
144
- <div id="mec_reg_field_name">
145
- <?php echo $this->main->field_name( ':i:' ); ?>
146
- </div>
147
- <div id="mec_reg_field_tel">
148
- <?php echo $this->main->field_tel( ':i:' ); ?>
149
- </div>
150
- <div id="mec_reg_field_date">
151
- <?php echo $this->main->field_date( ':i:' ); ?>
152
- </div>
153
- <div id="mec_reg_field_file">
154
- <?php echo $this->main->field_file( ':i:' ); ?>
155
- </div>
156
- <div id="mec_reg_field_textarea">
157
- <?php echo $this->main->field_textarea( ':i:' ); ?>
158
- </div>
159
- <div id="mec_reg_field_checkbox">
160
- <?php echo $this->main->field_checkbox( ':i:' ); ?>
161
- </div>
162
- <div id="mec_reg_field_radio">
163
- <?php echo $this->main->field_radio( ':i:' ); ?>
164
- </div>
165
- <div id="mec_reg_field_select">
166
- <?php echo $this->main->field_select( ':i:' ); ?>
167
- </div>
168
- <div id="mec_reg_field_agreement">
169
- <?php echo $this->main->field_agreement( ':i:' ); ?>
170
- </div>
171
- <div id="mec_reg_field_p">
172
- <?php echo $this->main->field_p( ':i:' ); ?>
173
- </div>
174
- <div id="mec_reg_field_option">
175
- <?php echo $this->main->field_option( ':fi:', ':i:' ); ?>
176
- </div>
177
- </div>
178
- </div>
179
- </div>
180
- </div>
181
-
182
- <div id="wns-be-footer">
183
- <a href="" id="" class="dpr-btn dpr-save-btn"><?php _e( 'Save Changes', 'modern-events-calendar-lite' ); ?></a>
184
- </div>
185
-
186
- </div>
187
-
188
- <script type="text/javascript">
189
- jQuery(document).ready(function()
190
- {
191
- jQuery(".dpr-save-btn").on('click', function(event)
192
- {
193
- event.preventDefault();
194
- jQuery("#mec_reg_fields_form_button").trigger('click');
195
- });
196
- });
197
-
198
- jQuery("#mec_reg_fields_form").on('submit', function(event)
199
- {
200
- event.preventDefault();
201
-
202
- // Add loading Class to the button
203
- jQuery(".dpr-save-btn").addClass('loading').text("<?php echo esc_js( esc_attr__( 'Saved', 'modern-events-calendar-lite' ) ); ?>");
204
- jQuery('<div class="wns-saved-settings"><?php echo esc_js( esc_attr__( 'Settings Saved!', 'modern-events-calendar-lite' ) ); ?></div>').insertBefore('#wns-be-content');
205
-
206
- var fields = jQuery("#mec_reg_fields_form").serialize();
207
- jQuery.ajax(
208
- {
209
- type: "POST",
210
- url: ajaxurl,
211
- data: "action=mec_save_reg_form&"+fields,
212
- beforeSend: function () {
213
- jQuery('.wns-be-main').append('<div class="mec-loarder-wrap mec-settings-loader"><div class="mec-loarder"><div></div><div></div><div></div></div></div>');
214
- },
215
- success: function(data)
216
- {
217
- // Remove the loading Class to the button
218
- setTimeout(function(){
219
- jQuery(".dpr-save-btn").removeClass('loading').text("<?php echo esc_js( esc_attr__( 'Save Changes', 'modern-events-calendar-lite' ) ); ?>");
220
- jQuery('.wns-saved-settings').remove();
221
- jQuery('.mec-loarder-wrap').remove();
222
- }, 1000);
223
- },
224
- error: function(jqXHR, textStatus, errorThrown)
225
- {
226
- // Remove the loading Class to the button
227
- setTimeout(function(){
228
- jQuery(".dpr-save-btn").removeClass('loading').text("<?php echo esc_js( esc_attr__( 'Save Changes', 'modern-events-calendar-lite' ) ); ?>");
229
- jQuery('.wns-saved-settings').remove();
230
- jQuery('.mec-loarder-wrap').remove();
231
- }, 1000);
232
- }
233
- });
234
- });
235
- </script>
236
- <?php do_action( 'mec_reg_form_end' ); ?>
1
  <?php
2
  /** no direct access **/
3
+ defined('MECEXEC') or die();
4
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/features/mec/single.php CHANGED
@@ -156,7 +156,7 @@ $pages = get_pages();
156
  <span class="mec-tooltip">
157
  <div class="box">
158
  <h5 class="title"><?php _e('Exceptional days', 'modern-events-calendar-lite'); ?></h5>
159
- <div class="content"><p><?php esc_attr_e("Using this option you can include/exclude certain days to/from event occurrence dates.", 'modern-events-calendar-lite'); ?><a href="https://webnus.net/dox/modern-events-calendar/exceptional-days/" target="_blank"><?php _e('Read More', 'modern-events-calendar-lite'); ?></a></p></div>
160
  </div>
161
  <i title="" class="dashicons-before dashicons-editor-help"></i>
162
  </span>
156
  <span class="mec-tooltip">
157
  <div class="box">
158
  <h5 class="title"><?php _e('Exceptional days', 'modern-events-calendar-lite'); ?></h5>
159
+ <div class="content"><p><?php esc_attr_e("Using this option you can exclude certain days from event occurrence dates.", 'modern-events-calendar-lite'); ?><a href="https://webnus.net/dox/modern-events-calendar/exceptional-days/" target="_blank"><?php _e('Read More', 'modern-events-calendar-lite'); ?></a></p></div>
160
  </div>
161
  <i title="" class="dashicons-before dashicons-editor-help"></i>
162
  </span>
app/features/mec/support-page.php CHANGED
@@ -30,8 +30,8 @@ wp_enqueue_script('mec-lity-script', $this->main->asset('packages/lity/lity.min.
30
  <div class="w-box-content">
31
  <p><?php esc_html_e('Advice and answers from the Webnus Team'); ?></p>
32
  <div class="search-form">
33
- <form action="https://intercom.help/webnus" method="">
34
- <input type="text" placeholder="<?php esc_html_e('Search...'); ?>" name="q">
35
  <button><i class="mec-sl-magnifier"></i></button>
36
  </form>
37
  </div>
30
  <div class="w-box-content">
31
  <p><?php esc_html_e('Advice and answers from the Webnus Team'); ?></p>
32
  <div class="search-form">
33
+ <form action="https://webnus.crisp.help/en/" method="">
34
+ <input type="text" placeholder="<?php esc_html_e('Search...'); ?>" name="search_query">
35
  <button><i class="mec-sl-magnifier"></i></button>
36
  </form>
37
  </div>
app/features/mec/support.php CHANGED
@@ -123,7 +123,7 @@ defined('MECEXEC') or die();
123
  <?php endif; ?>
124
  <div class="w-button">
125
  <?php if(!$this->getPRO()): ?>
126
- <a href="https://webnus.net/pricing/#plugins" target="_blank"><?php echo esc_html__('GO PREMIUM', 'modern-events-calendar-lite'); ?></a>
127
  <?php else: ?>
128
  <a href="https://webnus.ticksy.com/" target="_blank"><?php echo esc_html__('OPEN A TICKET', 'modern-events-calendar-lite'); ?></a>
129
  <?php endif; ?>
123
  <?php endif; ?>
124
  <div class="w-button">
125
  <?php if(!$this->getPRO()): ?>
126
+ <a href="https://webnus.net/mec-purchase/" target="_blank"><?php echo esc_html__('GO PREMIUM', 'modern-events-calendar-lite'); ?></a>
127
  <?php else: ?>
128
  <a href="https://webnus.ticksy.com/" target="_blank"><?php echo esc_html__('OPEN A TICKET', 'modern-events-calendar-lite'); ?></a>
129
  <?php endif; ?>
app/features/search.php CHANGED
@@ -251,8 +251,13 @@ class MEC_feature_search extends MEC_base
251
  );
252
  }
253
 
 
 
 
 
 
254
  $query->set('tax_query', $mec_quesries);
255
- $query->set('post_type', array('post','mec-events'));
256
 
257
  return $query;
258
  }
251
  );
252
  }
253
 
254
+ // wordpress event list search
255
+ $post_types = array('post', 'mec-events');
256
+ $current_screen = isset(get_current_screen()->id) ? get_current_screen()->id : false;
257
+ if($current_screen and trim($current_screen) == 'edit-mec-events') $post_types = 'mec-events';
258
+
259
  $query->set('tax_query', $mec_quesries);
260
+ $query->set('post_type', $post_types);
261
 
262
  return $query;
263
  }
app/libraries/factory.php CHANGED
@@ -236,6 +236,9 @@ class MEC_factory extends MEC_base
236
 
237
  // Include MEC typekit script file
238
  wp_enqueue_script('mec-typekit-script', $this->main->asset('js/jquery.typewatch.js'));
 
 
 
239
 
240
  // Backend Dependencies
241
  $dependencies = array('wp-color-picker', 'jquery-ui-datepicker');
@@ -327,6 +330,10 @@ class MEC_factory extends MEC_base
327
  $elementor_edit_mode = 'no';
328
  }
329
 
 
 
 
 
330
  // Localize Some Strings
331
  wp_localize_script('mec-frontend-script', 'mecdata', array
332
  (
@@ -339,6 +346,7 @@ class MEC_factory extends MEC_base
339
  'second'=>__('second', 'modern-events-calendar-lite'),
340
  'seconds'=>__('seconds', 'modern-events-calendar-lite'),
341
  'elementor_edit_mode'=>$elementor_edit_mode,
 
342
  ));
343
 
344
  // Include Google Recaptcha Javascript API
236
 
237
  // Include MEC typekit script file
238
  wp_enqueue_script('mec-typekit-script', $this->main->asset('js/jquery.typewatch.js'));
239
+
240
+ //Include the nice-select
241
+ wp_enqueue_script('mec-niceselect-script', $this->main->asset('js/jquery.nice-select.min.js'));
242
 
243
  // Backend Dependencies
244
  $dependencies = array('wp-color-picker', 'jquery-ui-datepicker');
330
  $elementor_edit_mode = 'no';
331
  }
332
 
333
+ // Settings
334
+ $settings = $this->main->get_settings();
335
+ $grecaptcha_key = isset($settings['google_recaptcha_sitekey']) ? trim($settings['google_recaptcha_sitekey']) : '';
336
+
337
  // Localize Some Strings
338
  wp_localize_script('mec-frontend-script', 'mecdata', array
339
  (
346
  'second'=>__('second', 'modern-events-calendar-lite'),
347
  'seconds'=>__('seconds', 'modern-events-calendar-lite'),
348
  'elementor_edit_mode'=>$elementor_edit_mode,
349
+ 'recapcha_key'=>$grecaptcha_key
350
  ));
351
 
352
  // Include Google Recaptcha Javascript API
app/libraries/main.php CHANGED
@@ -551,6 +551,8 @@ class MEC_main extends MEC_base
551
  __('Coupons', 'modern-events-calendar-lite') => 'coupon_option',
552
  __('Taxes / Fees', 'modern-events-calendar-lite') => 'taxes_option',
553
  __('Ticket Variations & Options', 'modern-events-calendar-lite') => 'ticket_variations_option',
 
 
554
  );
555
 
556
  $modules = array(
@@ -652,7 +654,7 @@ class MEC_main extends MEC_base
652
  <ul class="<?php echo $active_menu == 'booking' ? 'subsection' : 'mec-settings-submenu'; ?>">
653
 
654
  <?php foreach ($booking as $booking_name => $booking_link) : ?>
655
- <?php if ( $booking_link == 'coupon_option' || $booking_link == 'taxes_option' || $booking_link == 'ticket_variations_option' ): ?>
656
  <?php if ( isset($options['booking_status']) and $options['booking_status'] ) : ?>
657
  <li>
658
  <a
@@ -725,25 +727,6 @@ class MEC_main extends MEC_base
725
  <?php endforeach; ?>
726
  </ul>
727
  </li>
728
-
729
-
730
- <?php if($this->getPRO() and isset($options['booking_status']) and $options['booking_status']): ?>
731
- <!-- Booking form -->
732
- <li class="wns-be-group-menu-li mec-settings-menu <?php echo $active_menu == 'reg_form' ? 'active' : ''; ?>">
733
- <a href="<?php echo $this->add_qs_var('tab', 'MEC-reg-form'); ?>" id="" class="wns-be-group-tab-link-a">
734
- <i class="mec-sl-layers"></i>
735
- <span class="wns-be-group-menu-title"><?php _e('Booking Form', 'modern-events-calendar-lite'); ?></span>
736
- </a>
737
- </li>
738
- <!-- Payment Gateways -->
739
- <li class="wns-be-group-menu-li mec-settings-menu <?php echo $active_menu == 'gateways' ? 'active' : ''; ?>">
740
- <a href="<?php echo $this->add_qs_var('tab', 'MEC-gateways'); ?>" id="" class="wns-be-group-tab-link-a">
741
- <i class="mec-sl-wallet"></i>
742
- <span class="wns-be-group-menu-title"><?php _e('Payment Gateways', 'modern-events-calendar-lite'); ?></span>
743
- </a>
744
- </li>
745
- <?php endif;?>
746
-
747
 
748
  <!-- Notifications -->
749
  <li class="wns-be-group-menu-li mec-settings-menu <?php echo $active_menu == 'notifications' ? 'active' : ''; ?>">
@@ -5036,7 +5019,7 @@ class MEC_main extends MEC_base
5036
 
5037
  public function get_pro_link()
5038
  {
5039
- return 'https://webnus.net/pricing/#plugins';
5040
  }
5041
 
5042
  /**
551
  __('Coupons', 'modern-events-calendar-lite') => 'coupon_option',
552
  __('Taxes / Fees', 'modern-events-calendar-lite') => 'taxes_option',
553
  __('Ticket Variations & Options', 'modern-events-calendar-lite') => 'ticket_variations_option',
554
+ __('Booking Form', 'modern-events-calendar-lite') => 'booking_form_option',
555
+ __('Payment Gateways', 'modern-events-calendar-lite') => 'payment_gateways_option',
556
  );
557
 
558
  $modules = array(
654
  <ul class="<?php echo $active_menu == 'booking' ? 'subsection' : 'mec-settings-submenu'; ?>">
655
 
656
  <?php foreach ($booking as $booking_name => $booking_link) : ?>
657
+ <?php if ( $booking_link == 'coupon_option' || $booking_link == 'taxes_option' || $booking_link == 'ticket_variations_option' || $booking_link == 'booking_form_option' || $booking_link == 'payment_gateways_option' ): ?>
658
  <?php if ( isset($options['booking_status']) and $options['booking_status'] ) : ?>
659
  <li>
660
  <a
727
  <?php endforeach; ?>
728
  </ul>
729
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
730
 
731
  <!-- Notifications -->
732
  <li class="wns-be-group-menu-li mec-settings-menu <?php echo $active_menu == 'notifications' ? 'active' : ''; ?>">
5019
 
5020
  public function get_pro_link()
5021
  {
5022
+ return 'https://webnus.net/mec-purchase/';
5023
  }
5024
 
5025
  /**
app/libraries/render.php CHANGED
@@ -245,7 +245,7 @@ class MEC_render extends MEC_base
245
  */
246
  public function vdefault($atts = array())
247
  {
248
- $monthly_skin = (isset($this->settings['monthly_view_archive_skin']) and trim($this->settings['monthly_view_archive_skin']) != '') ? $this->settings['monthly_view_archive_skin'] : 'classic';
249
  $list_skin = (isset($this->settings['list_archive_skin']) and trim($this->settings['list_archive_skin']) != '') ? $this->settings['list_archive_skin'] : 'standard';
250
  $grid_skin = (isset($this->settings['grid_archive_skin']) and trim($this->settings['grid_archive_skin']) != '') ? $this->settings['grid_archive_skin'] : 'classic';
251
  $timetable_skin = (isset($this->settings['timetable_archive_skin']) and trim($this->settings['timetable_archive_skin']) != '') ? $this->settings['timetable_archive_skin'] : 'modern';
245
  */
246
  public function vdefault($atts = array())
247
  {
248
+ $monthly_skin = (isset($this->settings['monthly_view_archive_skin']) and trim($this->settings['monthly_view_archive_skin']) != '') ? $this->settings['monthly_view_archive_skin'] : 'clean';
249
  $list_skin = (isset($this->settings['list_archive_skin']) and trim($this->settings['list_archive_skin']) != '') ? $this->settings['list_archive_skin'] : 'standard';
250
  $grid_skin = (isset($this->settings['grid_archive_skin']) and trim($this->settings['grid_archive_skin']) != '') ? $this->settings['grid_archive_skin'] : 'classic';
251
  $timetable_skin = (isset($this->settings['timetable_archive_skin']) and trim($this->settings['timetable_archive_skin']) != '') ? $this->settings['timetable_archive_skin'] : 'modern';
app/libraries/skins.php CHANGED
@@ -95,6 +95,7 @@ class MEC_skins extends MEC_base
95
  public $month_divider;
96
  public $toggle_month_divider;
97
  public $image_popup;
 
98
 
99
  /**
100
  * Constructor method
95
  public $month_divider;
96
  public $toggle_month_divider;
97
  public $image_popup;
98
+ public $map_on_top;
99
 
100
  /**
101
  * Constructor method
app/modules/booking/steps/tickets.php CHANGED
@@ -46,7 +46,7 @@ $date_format = (isset($settings['booking_date_format1']) and trim($settings['boo
46
  <?php endforeach; ?>
47
  </div>
48
 
49
- <?php if($this->get_recaptcha_status('booking')): ?><div class="mec-google-recaptcha"><div class="g-recaptcha" data-sitekey="<?php echo $settings['google_recaptcha_sitekey']; ?>"></div></div><?php endif; ?>
50
  <input type="hidden" name="action" value="mec_book_form" />
51
  <input type="hidden" name="event_id" value="<?php echo $event_id; ?>" />
52
  <input type="hidden" name="uniqueid" value="<?php echo $uniqueid; ?>" />
46
  <?php endforeach; ?>
47
  </div>
48
 
49
+ <?php if($this->get_recaptcha_status('booking')): ?><div class="mec-google-recaptcha"><div id="g-recaptcha" class="g-recaptcha" data-sitekey="<?php echo $settings['google_recaptcha_sitekey']; ?>"></div></div><?php endif; ?>
50
  <input type="hidden" name="action" value="mec_book_form" />
51
  <input type="hidden" name="event_id" value="<?php echo $event_id; ?>" />
52
  <input type="hidden" name="uniqueid" value="<?php echo $uniqueid; ?>" />
app/skins/grid.php CHANGED
@@ -121,6 +121,9 @@ class MEC_skin_grid extends MEC_skins
121
 
122
  // The count in row
123
  $this->count = isset($this->skin_options['count']) ? $this->skin_options['count'] : '3';
 
 
 
124
 
125
  // Init MEC
126
  $this->args['mec-init'] = true;
121
 
122
  // The count in row
123
  $this->count = isset($this->skin_options['count']) ? $this->skin_options['count'] : '3';
124
+
125
+ // Map on top
126
+ $this->map_on_top = isset($this->skin_options['map_on_top']) ? $this->skin_options['map_on_top'] : false;
127
 
128
  // Init MEC
129
  $this->args['mec-init'] = true;
app/skins/grid/render.php CHANGED
@@ -27,7 +27,7 @@ if($this->style == 'colorful')
27
  $rcount = 1 ;
28
  foreach($this->events as $date):
29
  foreach($date as $event):
30
-
31
  echo ($rcount == 1) ? '<div class="row">' : '';
32
  echo '<div class="col-md-'.$col.' col-sm-'.$col.'">';
33
 
@@ -181,7 +181,7 @@ if($this->style == 'colorful')
181
  <?php endif; ?>
182
  <div class="mec-event-detail"><?php echo (isset($location['name']) ? $location['name'] : ''); ?></div>
183
  </div>
184
- <div class="mec-event-image"><a data-event-id="<?php echo $event->data->ID; ?>" href="<?php echo $this->main->get_event_date_permalink($event->data->permalink, $event->date['start']['date']); ?>"><?php echo $event->data->thumbnails['medium']; ?></a></div>
185
  <div class="mec-event-content">
186
  <?php do_action('display_mec_tai' , $event ); ?>
187
  <h4 class="mec-event-title"><a class="mec-color-hover" data-event-id="<?php echo $event->data->ID; ?>" href="<?php echo $this->main->get_event_date_permalink($event->data->permalink, $event->date['start']['date']); ?>"><?php echo $event->data->title; ?></a><?php echo $event_color; ?><?php do_action('mec_clean_custom_head' , $event ); ?></h4>
@@ -266,4 +266,36 @@ if($this->style == 'colorful')
266
  <?php endforeach; ?>
267
  <?php endforeach; ?>
268
  </div>
269
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  $rcount = 1 ;
28
  foreach($this->events as $date):
29
  foreach($date as $event):
30
+ $map_events[] = $event;
31
  echo ($rcount == 1) ? '<div class="row">' : '';
32
  echo '<div class="col-md-'.$col.' col-sm-'.$col.'">';
33
 
181
  <?php endif; ?>
182
  <div class="mec-event-detail"><?php echo (isset($location['name']) ? $location['name'] : ''); ?></div>
183
  </div>
184
+ <div class="mec-event-image"><?php do_action('display_mec_clean_image' , $event ); ?><a data-event-id="<?php echo $event->data->ID; ?>" href="<?php echo $this->main->get_event_date_permalink($event->data->permalink, $event->date['start']['date']); ?>"><?php echo $event->data->thumbnails['medium']; ?></a></div>
185
  <div class="mec-event-content">
186
  <?php do_action('display_mec_tai' , $event ); ?>
187
  <h4 class="mec-event-title"><a class="mec-color-hover" data-event-id="<?php echo $event->data->ID; ?>" href="<?php echo $this->main->get_event_date_permalink($event->data->permalink, $event->date['start']['date']); ?>"><?php echo $event->data->title; ?></a><?php echo $event_color; ?><?php do_action('mec_clean_custom_head' , $event ); ?></h4>
266
  <?php endforeach; ?>
267
  <?php endforeach; ?>
268
  </div>
269
+ </div>
270
+
271
+ <?php
272
+ if ( isset($this->map_on_top) and $this->map_on_top ) :
273
+ if(isset($map_events) and !empty($map_events))
274
+ {
275
+ // Include Map Assets such as JS and CSS libraries
276
+ $this->main->load_map_assets();
277
+
278
+ $map_javascript = '<script type="text/javascript">
279
+ jQuery(document).ready(function()
280
+ {
281
+ var jsonPush = gmapSkin('.json_encode($this->render->markers($map_events)).');
282
+ jQuery("#mec_googlemap_canvas'.$this->id.'").mecGoogleMaps(
283
+ {
284
+ id: "'.$this->id.'",
285
+ atts: "'.http_build_query(array('atts'=>$this->atts), '', '&').'",
286
+ zoom: '.(isset($settings['google_maps_zoomlevel']) ? $settings['google_maps_zoomlevel'] : 14).',
287
+ icon: "'.apply_filters('mec_marker_icon', $this->main->asset('img/m-04.png')).'",
288
+ styles: '.((isset($settings['google_maps_style']) and trim($settings['google_maps_style']) != '') ? $this->main->get_googlemap_style($settings['google_maps_style']) : "''").',
289
+ markers: jsonPush,
290
+ clustering_images: "'.$this->main->asset('img/cluster1/m').'",
291
+ getDirection: 0,
292
+ ajax_url: "'.admin_url('admin-ajax.php', NULL).'",
293
+ });
294
+ });
295
+ </script>';
296
+
297
+ // Include javascript code into the page
298
+ if($this->main->is_ajax()) echo $map_javascript;
299
+ else $this->factory->params('footer', $map_javascript);
300
+ }
301
+ endif;
app/skins/grid/tpl.php CHANGED
@@ -48,6 +48,12 @@ do_action('mec_grid_skin_head');
48
  <?php if($this->sf_status) echo $this->sf_search_form(); ?>
49
 
50
  <?php if($this->found): ?>
 
 
 
 
 
 
51
  <div class="mec-skin-grid-events-container" id="mec_skin_events_<?php echo $this->id; ?>">
52
  <?php echo $items_html; ?>
53
  </div>
48
  <?php if($this->sf_status) echo $this->sf_search_form(); ?>
49
 
50
  <?php if($this->found): ?>
51
+ <?php if ( $this->map_on_top == '1' ) : ?>
52
+ <div class="mec-wrap mec-skin-map-container <?php echo $this->html_class; ?>" id="mec_skin_<?php echo $this->id; ?>">
53
+ <div class="mec-googlemap-skin" id="mec_googlemap_canvas<?php echo $this->id; ?>" style="height: 500px;"></div>
54
+ <input type="hidden" id="gmap-data" value="">
55
+ </div>
56
+ <?php endif; ?>
57
  <div class="mec-skin-grid-events-container" id="mec_skin_events_<?php echo $this->id; ?>">
58
  <?php echo $items_html; ?>
59
  </div>
app/skins/list.php CHANGED
@@ -96,6 +96,9 @@ class MEC_skin_list extends MEC_skins
96
  // Toggle Month Divider or not
97
  $this->toggle_month_divider = isset($this->skin_options['toggle_month_divider']) ? $this->skin_options['toggle_month_divider'] : 0;
98
 
 
 
 
99
  // The style
100
  $this->style = isset($this->skin_options['style']) ? $this->skin_options['style'] : 'modern';
101
 
96
  // Toggle Month Divider or not
97
  $this->toggle_month_divider = isset($this->skin_options['toggle_month_divider']) ? $this->skin_options['toggle_month_divider'] : 0;
98
 
99
+ // Map on top
100
+ $this->map_on_top = isset($this->skin_options['map_on_top']) ? $this->skin_options['map_on_top'] : false;
101
+
102
  // The style
103
  $this->style = isset($this->skin_options['style']) ? $this->skin_options['style'] : 'modern';
104
 
app/skins/list/render.php CHANGED
@@ -15,10 +15,12 @@ $event_colorskin = (isset($styling['mec_colorskin']) || isset($styling['color'])
15
  <?php $month_id = date('Ym', strtotime($date)); if($this->month_divider and $month_id != $current_month_divider): $current_month_divider = $month_id; ?>
16
  <div class="mec-month-divider" data-toggle-divider="mec-toggle-<?php echo date_i18n('Ym', strtotime($date)); ?>-<?php echo $this->id; ?>"><span><?php echo date_i18n('F Y', strtotime($date)); ?></span><i class="mec-sl-arrow-down"></i></div>
17
  <?php endif; ?>
 
18
 
19
  <?php
20
  foreach($events as $event)
21
  {
 
22
  $location = isset($event->data->locations[$event->data->meta['mec_location_id']]) ? $event->data->locations[$event->data->meta['mec_location_id']] : array();
23
  $organizer = isset($event->data->organizers[$event->data->meta['mec_organizer_id']]) ? $event->data->organizers[$event->data->meta['mec_organizer_id']] : array();
24
  $start_time = (isset($event->data->time) ? $event->data->time['start'] : '');
@@ -234,4 +236,36 @@ $event_colorskin = (isset($styling['mec_colorskin']) || isset($styling['color'])
234
  <?php } ?>
235
  <?php endforeach; ?>
236
  </div>
237
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  <?php $month_id = date('Ym', strtotime($date)); if($this->month_divider and $month_id != $current_month_divider): $current_month_divider = $month_id; ?>
16
  <div class="mec-month-divider" data-toggle-divider="mec-toggle-<?php echo date_i18n('Ym', strtotime($date)); ?>-<?php echo $this->id; ?>"><span><?php echo date_i18n('F Y', strtotime($date)); ?></span><i class="mec-sl-arrow-down"></i></div>
17
  <?php endif; ?>
18
+
19
 
20
  <?php
21
  foreach($events as $event)
22
  {
23
+ $map_events[] = $event;
24
  $location = isset($event->data->locations[$event->data->meta['mec_location_id']]) ? $event->data->locations[$event->data->meta['mec_location_id']] : array();
25
  $organizer = isset($event->data->organizers[$event->data->meta['mec_organizer_id']]) ? $event->data->organizers[$event->data->meta['mec_organizer_id']] : array();
26
  $start_time = (isset($event->data->time) ? $event->data->time['start'] : '');
236
  <?php } ?>
237
  <?php endforeach; ?>
238
  </div>
239
+ </div>
240
+
241
+ <?php
242
+ if ( isset($this->map_on_top) and $this->map_on_top ) :
243
+ if(isset($map_events) and !empty($map_events))
244
+ {
245
+ // Include Map Assets such as JS and CSS libraries
246
+ $this->main->load_map_assets();
247
+
248
+ $map_javascript = '<script type="text/javascript">
249
+ jQuery(document).ready(function()
250
+ {
251
+ var jsonPush = gmapSkin('.json_encode($this->render->markers($map_events)).');
252
+ jQuery("#mec_googlemap_canvas'.$this->id.'").mecGoogleMaps(
253
+ {
254
+ id: "'.$this->id.'",
255
+ atts: "'.http_build_query(array('atts'=>$this->atts), '', '&').'",
256
+ zoom: '.(isset($settings['google_maps_zoomlevel']) ? $settings['google_maps_zoomlevel'] : 14).',
257
+ icon: "'.apply_filters('mec_marker_icon', $this->main->asset('img/m-04.png')).'",
258
+ styles: '.((isset($settings['google_maps_style']) and trim($settings['google_maps_style']) != '') ? $this->main->get_googlemap_style($settings['google_maps_style']) : "''").',
259
+ markers: jsonPush,
260
+ clustering_images: "'.$this->main->asset('img/cluster1/m').'",
261
+ getDirection: 0,
262
+ ajax_url: "'.admin_url('admin-ajax.php', NULL).'",
263
+ });
264
+ });
265
+ </script>';
266
+
267
+ // Include javascript code into the page
268
+ if($this->main->is_ajax()) echo $map_javascript;
269
+ else $this->factory->params('footer', $map_javascript);
270
+ }
271
+ endif;
app/skins/list/tpl.php CHANGED
@@ -51,8 +51,14 @@ do_action('mec_list_skin_head');
51
  <div class="mec-wrap mec-skin-list-container <?php echo $this->html_class; ?>" id="mec_skin_<?php echo $this->id; ?>">
52
 
53
  <?php if($this->sf_status) echo $this->sf_search_form(); ?>
54
-
55
  <?php if($this->found): ?>
 
 
 
 
 
 
56
  <div class="mec-skin-list-events-container<?php if($this->style == 'accordion' and $this->toggle_month_divider and $this->month_divider) echo ' mec-toggle-month-divider'; ?>" id="mec_skin_events_<?php echo $this->id; ?>">
57
  <?php echo $items_html; ?>
58
  </div>
51
  <div class="mec-wrap mec-skin-list-container <?php echo $this->html_class; ?>" id="mec_skin_<?php echo $this->id; ?>">
52
 
53
  <?php if($this->sf_status) echo $this->sf_search_form(); ?>
54
+
55
  <?php if($this->found): ?>
56
+ <?php if ( $this->map_on_top == '1' ) : ?>
57
+ <div class="mec-wrap mec-skin-map-container <?php echo $this->html_class; ?>" id="mec_skin_<?php echo $this->id; ?>">
58
+ <div class="mec-googlemap-skin" id="mec_googlemap_canvas<?php echo $this->id; ?>" style="height: 500px;"></div>
59
+ <input type="hidden" id="gmap-data" value="">
60
+ </div>
61
+ <?php endif; ?>
62
  <div class="mec-skin-list-events-container<?php if($this->style == 'accordion' and $this->toggle_month_divider and $this->month_divider) echo ' mec-toggle-month-divider'; ?>" id="mec_skin_events_<?php echo $this->id; ?>">
63
  <?php echo $items_html; ?>
64
  </div>
app/skins/masonry/render.php CHANGED
@@ -176,6 +176,7 @@ $settings = $this->main->get_settings();
176
  </div>
177
  <div class="mec-event-footer">
178
  <a class="mec-booking-button" data-event-id="<?php echo $event->data->ID; ?>" href="<?php echo $this->main->get_event_date_permalink($event->data->permalink, $event->date['start']['date']); ?>" target="_self"><?php echo (is_array($event->data->tickets) and count($event->data->tickets)) ? $this->main->m('register_button', __('REGISTER', 'modern-events-calendar-lite')) : $this->main->m('view_detail', __('View Detail', 'modern-events-calendar-lite')) ; ?></a>
 
179
  </div>
180
  </div>
181
  </article>
176
  </div>
177
  <div class="mec-event-footer">
178
  <a class="mec-booking-button" data-event-id="<?php echo $event->data->ID; ?>" href="<?php echo $this->main->get_event_date_permalink($event->data->permalink, $event->date['start']['date']); ?>" target="_self"><?php echo (is_array($event->data->tickets) and count($event->data->tickets)) ? $this->main->m('register_button', __('REGISTER', 'modern-events-calendar-lite')) : $this->main->m('view_detail', __('View Detail', 'modern-events-calendar-lite')) ; ?></a>
179
+ <?php do_action( 'mec_masonry_button', $event ); ?>
180
  </div>
181
  </div>
182
  </article>
assets/css/backend.css CHANGED
@@ -4911,4 +4911,410 @@ li.wns-be-group-menu-li.mec-settings-menu:hover > .mec-settings-submenu {
4911
  opacity: 1;
4912
  font-size: 12px;
4913
  padding: 6px 4px 6px 26px;
4914
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4911
  opacity: 1;
4912
  font-size: 12px;
4913
  padding: 6px 4px 6px 26px;
4914
+ }
4915
+
4916
+ /* Display Option / Shortcode / niceselect style */
4917
+ /* Niceselect */
4918
+ .wn-mec-select {
4919
+ width: 32.33333333%!important;
4920
+ clear: unset!important
4921
+ }
4922
+
4923
+ .wn-mec-select {
4924
+ -webkit-tap-highlight-color: transparent;
4925
+ background-color: #fff;
4926
+ border-radius: 3px;
4927
+ border: 1px solid #ddd;
4928
+ margin-bottom: 8px;
4929
+ position: relative;
4930
+ text-align: left!important;
4931
+ -webkit-transition: all .2s ease-in-out;
4932
+ transition: all .2s ease-in-out;
4933
+ box-shadow: 0 3px 13px -5px rgba(0,0,0,.1),inset 0 1px 2px rgba(0,0,0,.07)
4934
+ }
4935
+
4936
+ .wn-mec-select:hover {
4937
+ border-color: #dbdbdb
4938
+ }
4939
+
4940
+ .wn-mec-select.open .list {
4941
+ overflow: unset;
4942
+ width: 100%;
4943
+ margin: 0
4944
+ }
4945
+
4946
+ .wn-mec-select .list {
4947
+ background-color: #fff;
4948
+ border-radius: 2px;
4949
+ box-shadow: 0 2px 33px -2px rgba(0,0,0,.2),inset 0 1px 2px rgba(0,0,0,.07);
4950
+ box-sizing: border-box;
4951
+ margin-top: 4px;
4952
+ opacity: 0;
4953
+ overflow: hidden;
4954
+ padding: 0;
4955
+ pointer-events: none;
4956
+ position: absolute;
4957
+ top: 100%;
4958
+ left: 0;
4959
+ -webkit-transform-origin: 50% 0;
4960
+ -ms-transform-origin: 50% 0;
4961
+ transform-origin: 50% 0;
4962
+ -webkit-transform: scale(.75) translateY(-21px);
4963
+ -ms-transform: scale(.75) translateY(-21px);
4964
+ transform: scale(.75) translateY(-21px);
4965
+ -webkit-transition: all .2s cubic-bezier(.5,0,0,1.25),opacity .15s ease-out;
4966
+ transition: all .2s cubic-bezier(.5,0,0,1.25),opacity .15s ease-out;
4967
+ z-index: 9
4968
+ }
4969
+
4970
+ .wn-mec-select {
4971
+ -webkit-tap-highlight-color: transparent;
4972
+ background-color: #fff;
4973
+ border-radius: 5px;
4974
+ border: solid 1px #e8e8e8;
4975
+ box-sizing: border-box;
4976
+ clear: both;
4977
+ cursor: pointer;
4978
+ display: block;
4979
+ float: left;
4980
+ font-family: inherit;
4981
+ font-size: 14px;
4982
+ font-weight: 400;
4983
+ height: 42px;
4984
+ line-height: 40px;
4985
+ outline: 0;
4986
+ padding-left: 18px;
4987
+ padding-right: 30px;
4988
+ position: relative;
4989
+ text-align: left!important;
4990
+ -webkit-transition: all .2s ease-in-out;
4991
+ transition: all .2s ease-in-out;
4992
+ -webkit-user-select: none;
4993
+ -moz-user-select: none;
4994
+ -ms-user-select: none;
4995
+ user-select: none;
4996
+ white-space: nowrap;
4997
+ width: auto
4998
+ }
4999
+
5000
+ .wn-mec-select:hover {
5001
+ border-color: #dbdbdb
5002
+ }
5003
+
5004
+ .wn-mec-select:after {
5005
+ border-bottom: 2px solid #999;
5006
+ border-right: 2px solid #999;
5007
+ content: '';
5008
+ display: block;
5009
+ height: 5px;
5010
+ margin-top: -4px;
5011
+ pointer-events: none;
5012
+ position: absolute;
5013
+ right: 12px;
5014
+ top: 50%;
5015
+ -webkit-transform-origin: 66% 66%;
5016
+ -ms-transform-origin: 66% 66%;
5017
+ transform-origin: 66% 66%;
5018
+ -webkit-transform: rotate(45deg);
5019
+ -ms-transform: rotate(45deg);
5020
+ transform: rotate(45deg);
5021
+ -webkit-transition: all .15s ease-in-out;
5022
+ transition: all .15s ease-in-out;
5023
+ width: 5px
5024
+ }
5025
+
5026
+ .wn-mec-select.open:after {
5027
+ -webkit-transform: rotate(-135deg);
5028
+ -ms-transform: rotate(-135deg);
5029
+ transform: rotate(-135deg)
5030
+ }
5031
+
5032
+ .wn-mec-select.open .list {
5033
+ opacity: 1;
5034
+ pointer-events: auto;
5035
+ -webkit-transform: scale(1) translateY(0);
5036
+ -ms-transform: scale(1) translateY(0);
5037
+ transform: scale(1) translateY(0)
5038
+ }
5039
+
5040
+ .wn-mec-select.disabled {
5041
+ border-color: #ededed;
5042
+ color: #999;
5043
+ pointer-events: none
5044
+ }
5045
+
5046
+ .wn-mec-select.disabled:after {
5047
+ border-color: #ccc
5048
+ }
5049
+
5050
+ .wn-mec-select.wide {
5051
+ width: 100%
5052
+ }
5053
+
5054
+ .wn-mec-select.wide .list {
5055
+ left: 0!important;
5056
+ right: 0!important
5057
+ }
5058
+
5059
+ .wn-mec-select.right {
5060
+ float: right
5061
+ }
5062
+
5063
+ .wn-mec-select.right .list {
5064
+ left: auto;
5065
+ right: 0
5066
+ }
5067
+
5068
+ .wn-mec-select.small {
5069
+ font-size: 12px;
5070
+ height: 36px;
5071
+ line-height: 34px
5072
+ }
5073
+
5074
+ .wn-mec-select.small:after {
5075
+ height: 4px;
5076
+ width: 4px
5077
+ }
5078
+
5079
+ .wn-mec-select .list {
5080
+ background-color: #fff;
5081
+ border-radius: 5px;
5082
+ box-shadow: 0 0 0 1px rgba(68,68,68,.11);
5083
+ box-sizing: border-box;
5084
+ margin-top: 4px;
5085
+ opacity: 0;
5086
+ overflow: hidden;
5087
+ padding: 0;
5088
+ pointer-events: none;
5089
+ position: absolute;
5090
+ top: 100%;
5091
+ left: 0;
5092
+ -webkit-transform-origin: 50% 0;
5093
+ -ms-transform-origin: 50% 0;
5094
+ transform-origin: 50% 0;
5095
+ -webkit-transform: scale(.75) translateY(-21px);
5096
+ -ms-transform: scale(.75) translateY(-21px);
5097
+ transform: scale(.75) translateY(-21px);
5098
+ -webkit-transition: all .2s cubic-bezier(.5,0,0,1.25),opacity .15s ease-out;
5099
+ transition: all .2s cubic-bezier(.5,0,0,1.25),opacity .15s ease-out;
5100
+ z-index: 9
5101
+ }
5102
+
5103
+ .wn-mec-select .list:hover .option:not(:hover) {
5104
+ background-color: transparent!important
5105
+ }
5106
+
5107
+ .wn-mec-select .option {
5108
+ cursor: pointer;
5109
+ font-weight: 400;
5110
+ list-style: none;
5111
+ min-height: 40px;
5112
+ outline: 0;
5113
+ text-align: left;
5114
+ position: relative;
5115
+ font-size: 12px!important;
5116
+ padding: 1px 12px!important;
5117
+ margin: 0!important;
5118
+ line-height: 28px!important;
5119
+ min-height: 28px!important;
5120
+ -webkit-transition: all .2s ease-in-out;
5121
+ transition: all .2s ease-in-out;
5122
+ }
5123
+
5124
+ .wn-mec-select .option .wn-hover-img-sh img {
5125
+ position: absolute;
5126
+ padding: 3px;
5127
+ top: 0;
5128
+ left: 140px;
5129
+ box-shadow: 0 3px 42px -8px rgba(0,0,0,.3);
5130
+ visibility: hidden;
5131
+ opacity: 0;
5132
+ border: 1px solid #dbdbdb;
5133
+ z-index: 999999;
5134
+ background: #fff
5135
+ }
5136
+
5137
+ .wn-mec-select .option:hover .wn-hover-img-sh img {
5138
+ visibility: visible;
5139
+ opacity: 1
5140
+ }
5141
+
5142
+ .wn-mec-select .option.focus,
5143
+ .wn-mec-select .option.selected.focus,
5144
+ .wn-mec-select .option:hover {
5145
+ background-color: #f6f6f6
5146
+ }
5147
+
5148
+ .wn-mec-select .option.selected {
5149
+ font-weight: 700
5150
+ }
5151
+
5152
+ .wn-mec-select .option.disabled {
5153
+ background-color: transparent;
5154
+ color: #999;
5155
+ cursor: default
5156
+ }
5157
+
5158
+ .no-csspointerevents .wn-mec-select .list {
5159
+ display: none
5160
+ }
5161
+
5162
+ .no-csspointerevents .wn-mec-select.open .list {
5163
+ display: block
5164
+ }
5165
+
5166
+ .mec-custom-nice-select ul.list li.option {
5167
+ width: 30%!important;
5168
+ float: left!important;
5169
+ min-height: 135px!important;
5170
+ height: 135px;
5171
+ margin: 1.66%!important;
5172
+ box-sizing: border-box;
5173
+ text-align: center;
5174
+ padding: 10px!important;
5175
+ border-radius: 3px;
5176
+ border: 1px solid #eee;
5177
+ box-shadow: 0 1px 3px rgba(0,0,0,.025);
5178
+ background: #fff!important;
5179
+ }
5180
+
5181
+ .mec-custom-nice-select ul.list li.option:hover {
5182
+ box-shadow: 0 2px 7px rgba(0,0,0,.06);
5183
+ borde-color: #e0e0e0
5184
+ }
5185
+
5186
+ .mec-custom-nice-select .list:hover .option:not(:hover),
5187
+ .mec-custom-nice-select ul.list:hover li.option {
5188
+ background: #fff!important
5189
+ }
5190
+
5191
+ .mec-custom-nice-select ul.list {
5192
+ min-width: 600px!important;
5193
+ margin-left: -132px!important;
5194
+ padding: 20px 10px!important;
5195
+ background: #fcfbfd;
5196
+ border: 1px solid #e9e9e9;
5197
+ box-shadow: 0 1px 4px rgba(0,0,0,.05)
5198
+ }
5199
+
5200
+ .mec-custom-nice-select ul.list li.option.selected {
5201
+ border: 1px solid #008aff;
5202
+ box-shadow: 0 1px 8px -3px #008aff inset;
5203
+ color: #008aff;
5204
+ padding: 12px 0 0 0!important
5205
+ }
5206
+
5207
+ .mec-custom-nice-select .wn-img-sh img {
5208
+ margin: 6px 0 15px;
5209
+ line-height: 1;
5210
+ max-width: 68px;
5211
+ max-height: 56px;
5212
+ filter: grayscale(1);
5213
+ -webkit-filter: grayscale(1);
5214
+ transition: all .22s ease;
5215
+ -webkit-transition: all .22s ease;
5216
+ -moz-transition: all .22s ease;
5217
+ -ms-transition: all .22s ease;
5218
+ -o-transition: all .22s ease;
5219
+ }
5220
+
5221
+ .wn-mec-select .option.focus .wn-img-sh img,
5222
+ .wn-mec-select .option.selected.focus .wn-img-sh img,
5223
+ .wn-mec-select .option:hover .wn-img-sh img {
5224
+ background-color: #f6f6f6;
5225
+ filter: grayscale(0);
5226
+ -webkit-filter: grayscale(0)
5227
+ }
5228
+
5229
+ @media(max-width: 768px) {
5230
+ .wn-mec-select {
5231
+ width:45%!important
5232
+ }
5233
+
5234
+ .mec-custom-nice-select ul.list {
5235
+ margin-left: -24px!important;
5236
+ min-width: 404px!important
5237
+ }
5238
+
5239
+ .mec-custom-nice-select ul.list li.option {
5240
+ width: 46.6%!important
5241
+ }
5242
+
5243
+ .wn-hover-img-sh {
5244
+ display: none
5245
+ }
5246
+ }
5247
+
5248
+ @media(max-width: 480px) {
5249
+ .wn-mec-select {
5250
+ width:100%!important
5251
+ }
5252
+
5253
+ .mec-custom-nice-select ul.list {
5254
+ min-width: 337px!important
5255
+ }
5256
+ }
5257
+
5258
+ @media(max-width: 320px) {
5259
+ .mec-custom-nice-select ul.list li.option {
5260
+ width:100%!important
5261
+ }
5262
+
5263
+ .mec-custom-nice-select ul.list {
5264
+ min-width: 298px!important
5265
+ }
5266
+ }
5267
+
5268
+ .mec-sed-methods li {
5269
+ line-height: 28px;
5270
+ padding-left: 38px;
5271
+ position: relative
5272
+ }
5273
+
5274
+ .mec-sed-methods li:before {
5275
+ margin-right: 0
5276
+ }
5277
+
5278
+ .mec-sed-methods li:before {
5279
+ border-radius: 18px
5280
+ }
5281
+
5282
+ .mec-custom-nice-select ul.list li .wn-mec-text:after,
5283
+ .mec-sed-methods li:before {
5284
+ content: "";
5285
+ position: absolute;
5286
+ display: inline-block;
5287
+ background: #fff;
5288
+ border-radius: 2px;
5289
+ width: 12px;
5290
+ height: 12px;
5291
+ margin: -1px 0 0 -1px;
5292
+ cursor: pointer;
5293
+ border: 2px solid #e1e7ed;
5294
+ box-shadow: 0 2px 15px -3px rgba(69,77,89,.32);
5295
+ border-radius: 50%;
5296
+ }
5297
+
5298
+ .mec-custom-nice-select ul.list li .wn-mec-text {
5299
+ position: relative;
5300
+ padding-top: 14px;
5301
+ }
5302
+
5303
+ .mec-custom-nice-select ul.list li .wn-mec-text:after {
5304
+ left: calc(50% - 7px);
5305
+ top: -6px;
5306
+ }
5307
+
5308
+ .mec-sed-methods li:before {
5309
+ left: 9px;
5310
+ top: calc(50% - 7px)
5311
+ }
5312
+
5313
+ .mec-custom-nice-select ul.list li.option.selected .wn-mec-text:after,
5314
+ .mec-sed-methods li.active:before {
5315
+ width: 4px;
5316
+ height: 4px;
5317
+ border: 7px solid #008aff;
5318
+ background: #fff;
5319
+ box-shadow: 0 3px 16px -3px #008aff
5320
+ }
assets/css/backend.min.css CHANGED
@@ -2,4 +2,4 @@
2
  * Bootstrap v3.3.7 (http://getbootstrap.com)
3
  * Copyright 2011-2016 Twitter, Inc.
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
- */#webnus-dashboard button,#webnus-dashboard input,#webnus-dashboard select,#webnus-dashboard textarea{font-family:inherit;font-size:inherit;line-height:inherit}#webnus-dashboard a{color:#337ab7;text-decoration:none}#webnus-dashboard a:focus,#webnus-dashboard a:hover{color:#23527c}#webnus-dashboard a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}#webnus-dashboard figure{margin:0}#webnus-dashboard img{vertical-align:middle}.w-img-responsive{display:block;max-width:100%;height:auto}.w-img-rounded{border-radius:6px}.w-img-thumbnail{padding:4px;line-height:1w-42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0w-2s ease-in-out;-o-transition:all 0w-2s ease-in-out;transition:all 0w-2s ease-in-out;display:inline-block;max-width:100%;height:auto}.w-img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.w-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.w-sr-only-focusable:active,.w-sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.w-container,.w-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}[role=button]{cursor:pointer}@media (min-width:768px){.w-container{width:750px}}@media (min-width:992px){.w-container{width:970px}}@media (min-width:1200px){.w-container{width:1170px}}.w-row{margin-left:-15px;margin-right:-15px}.w-col-lg-1,.w-col-lg-10,.w-col-lg-11,.w-col-lg-12,.w-col-lg-2,.w-col-lg-3,.w-col-lg-4,.w-col-lg-5,.w-col-lg-6,.w-col-lg-7,.w-col-lg-8,.w-col-lg-9,.w-col-md-1,.w-col-md-10,.w-col-md-11,.w-col-md-12,.w-col-md-2,.w-col-md-3,.w-col-md-4,.w-col-md-5,.w-col-md-6,.w-col-md-7,.w-col-md-8,.w-col-md-9,.w-col-sm-1,.w-col-sm-10,.w-col-sm-11,.w-col-sm-12,.w-col-sm-2,.w-col-sm-3,.w-col-sm-4,.w-col-sm-5,.w-col-sm-6,.w-col-sm-7,.w-col-sm-8,.w-col-sm-9,.w-col-xs-1,.w-col-xs-10,.w-col-xs-11,.w-col-xs-12,.w-col-xs-2,.w-col-xs-3,.w-col-xs-4,.w-col-xs-5,.w-col-xs-6,.w-col-xs-7,.w-col-xs-8,.w-col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.w-col-xs-1,.w-col-xs-10,.w-col-xs-11,.w-col-xs-12,.w-col-xs-2,.w-col-xs-3,.w-col-xs-4,.w-col-xs-5,.w-col-xs-6,.w-col-xs-7,.w-col-xs-8,.w-col-xs-9{float:left}.w-col-xs-12{width:100%}.w-col-xs-11{width:91.66666667%}.w-col-xs-10{width:83.33333333%}.w-col-xs-9{width:75%}.w-col-xs-8{width:66.66666667%}.w-col-xs-7{width:58.33333333%}.w-col-xs-6{width:50%}.w-col-xs-5{width:41.66666667%}.w-col-xs-4{width:33.33333333%}.w-col-xs-3{width:25%}.w-col-xs-2{width:16.66666667%}.w-col-xs-1{width:8w-33333333%}.w-col-xs-pull-12{right:100%}.w-col-xs-pull-11{right:91.66666667%}.w-col-xs-pull-10{right:83.33333333%}.w-col-xs-pull-9{right:75%}.w-col-xs-pull-8{right:66.66666667%}.w-col-xs-pull-7{right:58.33333333%}.w-col-xs-pull-6{right:50%}.w-col-xs-pull-5{right:41.66666667%}.w-col-xs-pull-4{right:33.33333333%}.w-col-xs-pull-3{right:25%}.w-col-xs-pull-2{right:16.66666667%}.w-col-xs-pull-1{right:8w-33333333%}.w-col-xs-pull-0{right:auto}.w-col-xs-push-12{left:100%}.w-col-xs-push-11{left:91.66666667%}.w-col-xs-push-10{left:83.33333333%}.w-col-xs-push-9{left:75%}.w-col-xs-push-8{left:66.66666667%}.w-col-xs-push-7{left:58.33333333%}.w-col-xs-push-6{left:50%}.w-col-xs-push-5{left:41.66666667%}.w-col-xs-push-4{left:33.33333333%}.w-col-xs-push-3{left:25%}.w-col-xs-push-2{left:16.66666667%}.w-col-xs-push-1{left:8w-33333333%}.w-col-xs-push-0{left:auto}.w-col-xs-offset-12{margin-left:100%}.w-col-xs-offset-11{margin-left:91.66666667%}.w-col-xs-offset-10{margin-left:83.33333333%}.w-col-xs-offset-9{margin-left:75%}.w-col-xs-offset-8{margin-left:66.66666667%}.w-col-xs-offset-7{margin-left:58.33333333%}.w-col-xs-offset-6{margin-left:50%}.w-col-xs-offset-5{margin-left:41.66666667%}.w-col-xs-offset-4{margin-left:33.33333333%}.w-col-xs-offset-3{margin-left:25%}.w-col-xs-offset-2{margin-left:16.66666667%}.w-col-xs-offset-1{margin-left:8w-33333333%}.w-col-xs-offset-0{margin-left:0}@media (min-width:768px){.w-col-sm-1,.w-col-sm-10,.w-col-sm-11,.w-col-sm-12,.w-col-sm-2,.w-col-sm-3,.w-col-sm-4,.w-col-sm-5,.w-col-sm-6,.w-col-sm-7,.w-col-sm-8,.w-col-sm-9{float:left}.w-col-sm-12{width:100%}.w-col-sm-11{width:91.66666667%}.w-col-sm-10{width:83.33333333%}.w-col-sm-9{width:75%}.w-col-sm-8{width:66.66666667%}.w-col-sm-7{width:58.33333333%}.w-col-sm-6{width:50%}.w-col-sm-5{width:41.66666667%}.w-col-sm-4{width:33.33333333%}.w-col-sm-3{width:25%}.w-col-sm-2{width:16.66666667%}.w-col-sm-1{width:8w-33333333%}.w-col-sm-pull-12{right:100%}.w-col-sm-pull-11{right:91.66666667%}.w-col-sm-pull-10{right:83.33333333%}.w-col-sm-pull-9{right:75%}.w-col-sm-pull-8{right:66.66666667%}.w-col-sm-pull-7{right:58.33333333%}.w-col-sm-pull-6{right:50%}.w-col-sm-pull-5{right:41.66666667%}.w-col-sm-pull-4{right:33.33333333%}.w-col-sm-pull-3{right:25%}.w-col-sm-pull-2{right:16.66666667%}.w-col-sm-pull-1{right:8w-33333333%}.w-col-sm-pull-0{right:auto}.w-col-sm-push-12{left:100%}.w-col-sm-push-11{left:91.66666667%}.w-col-sm-push-10{left:83.33333333%}.w-col-sm-push-9{left:75%}.w-col-sm-push-8{left:66.66666667%}.w-col-sm-push-7{left:58.33333333%}.w-col-sm-push-6{left:50%}.w-col-sm-push-5{left:41.66666667%}.w-col-sm-push-4{left:33.33333333%}.w-col-sm-push-3{left:25%}.w-col-sm-push-2{left:16.66666667%}.w-col-sm-push-1{left:8w-33333333%}.w-col-sm-push-0{left:auto}.w-col-sm-offset-12{margin-left:100%}.w-col-sm-offset-11{margin-left:91.66666667%}.w-col-sm-offset-10{margin-left:83.33333333%}.w-col-sm-offset-9{margin-left:75%}.w-col-sm-offset-8{margin-left:66.66666667%}.w-col-sm-offset-7{margin-left:58.33333333%}.w-col-sm-offset-6{margin-left:50%}.w-col-sm-offset-5{margin-left:41.66666667%}.w-col-sm-offset-4{margin-left:33.33333333%}.w-col-sm-offset-3{margin-left:25%}.w-col-sm-offset-2{margin-left:16.66666667%}.w-col-sm-offset-1{margin-left:8w-33333333%}.w-col-sm-offset-0{margin-left:0}}@media (min-width:992px){.w-col-md-1,.w-col-md-10,.w-col-md-11,.w-col-md-12,.w-col-md-2,.w-col-md-3,.w-col-md-4,.w-col-md-5,.w-col-md-6,.w-col-md-7,.w-col-md-8,.w-col-md-9{float:left}.w-col-md-12{width:100%}.w-col-md-11{width:91.66666667%}.w-col-md-10{width:83.33333333%}.w-col-md-9{width:75%}.w-col-md-8{width:66.66666667%}.w-col-md-7{width:58.33333333%}.w-col-md-6{width:50%}.w-col-md-5{width:41.66666667%}.w-col-md-4{width:33.33333333%}.w-col-md-3{width:25%}.w-col-md-2{width:16.66666667%}.w-col-md-1{width:8w-33333333%}.w-col-md-pull-12{right:100%}.w-col-md-pull-11{right:91.66666667%}.w-col-md-pull-10{right:83.33333333%}.w-col-md-pull-9{right:75%}.w-col-md-pull-8{right:66.66666667%}.w-col-md-pull-7{right:58.33333333%}.w-col-md-pull-6{right:50%}.w-col-md-pull-5{right:41.66666667%}.w-col-md-pull-4{right:33.33333333%}.w-col-md-pull-3{right:25%}.w-col-md-pull-2{right:16.66666667%}.w-col-md-pull-1{right:8w-33333333%}.w-col-md-pull-0{right:auto}.w-col-md-push-12{left:100%}.w-col-md-push-11{left:91.66666667%}.w-col-md-push-10{left:83.33333333%}.w-col-md-push-9{left:75%}.w-col-md-push-8{left:66.66666667%}.w-col-md-push-7{left:58.33333333%}.w-col-md-push-6{left:50%}.w-col-md-push-5{left:41.66666667%}.w-col-md-push-4{left:33.33333333%}.w-col-md-push-3{left:25%}.w-col-md-push-2{left:16.66666667%}.w-col-md-push-1{left:8w-33333333%}.w-col-md-push-0{left:auto}.w-col-md-offset-12{margin-left:100%}.w-col-md-offset-11{margin-left:91.66666667%}.w-col-md-offset-10{margin-left:83.33333333%}.w-col-md-offset-9{margin-left:75%}.w-col-md-offset-8{margin-left:66.66666667%}.w-col-md-offset-7{margin-left:58.33333333%}.w-col-md-offset-6{margin-left:50%}.w-col-md-offset-5{margin-left:41.66666667%}.w-col-md-offset-4{margin-left:33.33333333%}.w-col-md-offset-3{margin-left:25%}.w-col-md-offset-2{margin-left:16.66666667%}.w-col-md-offset-1{margin-left:8w-33333333%}.w-col-md-offset-0{margin-left:0}}@media (min-width:1200px){.w-col-lg-1,.w-col-lg-10,.w-col-lg-11,.w-col-lg-12,.w-col-lg-2,.w-col-lg-3,.w-col-lg-4,.w-col-lg-5,.w-col-lg-6,.w-col-lg-7,.w-col-lg-8,.w-col-lg-9{float:left}.w-col-lg-12{width:100%}.w-col-lg-11{width:91.66666667%}.w-col-lg-10{width:83.33333333%}.w-col-lg-9{width:75%}.w-col-lg-8{width:66.66666667%}.w-col-lg-7{width:58.33333333%}.w-col-lg-6{width:50%}.w-col-lg-5{width:41.66666667%}.w-col-lg-4{width:33.33333333%}.w-col-lg-3{width:25%}.w-col-lg-2{width:16.66666667%}.w-col-lg-1{width:8w-33333333%}.w-col-lg-pull-12{right:100%}.w-col-lg-pull-11{right:91.66666667%}.w-col-lg-pull-10{right:83.33333333%}.w-col-lg-pull-9{right:75%}.w-col-lg-pull-8{right:66.66666667%}.w-col-lg-pull-7{right:58.33333333%}.w-col-lg-pull-6{right:50%}.w-col-lg-pull-5{right:41.66666667%}.w-col-lg-pull-4{right:33.33333333%}.w-col-lg-pull-3{right:25%}.w-col-lg-pull-2{right:16.66666667%}.w-col-lg-pull-1{right:8w-33333333%}.w-col-lg-pull-0{right:auto}.w-col-lg-push-12{left:100%}.w-col-lg-push-11{left:91.66666667%}.w-col-lg-push-10{left:83.33333333%}.w-col-lg-push-9{left:75%}.w-col-lg-push-8{left:66.66666667%}.w-col-lg-push-7{left:58.33333333%}.w-col-lg-push-6{left:50%}.w-col-lg-push-5{left:41.66666667%}.w-col-lg-push-4{left:33.33333333%}.w-col-lg-push-3{left:25%}.w-col-lg-push-2{left:16.66666667%}.w-col-lg-push-1{left:8w-33333333%}.w-col-lg-push-0{left:auto}.w-col-lg-offset-12{margin-left:100%}.w-col-lg-offset-11{margin-left:91.66666667%}.w-col-lg-offset-10{margin-left:83.33333333%}.w-col-lg-offset-9{margin-left:75%}.w-col-lg-offset-8{margin-left:66.66666667%}.w-col-lg-offset-7{margin-left:58.33333333%}.w-col-lg-offset-6{margin-left:50%}.w-col-lg-offset-5{margin-left:41.66666667%}.w-col-lg-offset-4{margin-left:33.33333333%}.w-col-lg-offset-3{margin-left:25%}.w-col-lg-offset-2{margin-left:16.66666667%}.w-col-lg-offset-1{margin-left:8w-33333333%}.w-col-lg-offset-0{margin-left:0}}.w-clearfix:after,.w-clearfix:before,.w-container-fluid:after,.w-container-fluid:before,.w-container:after,.w-container:before,.w-row:after,.w-row:before{content:" ";display:table}.w-clearfix:after,.w-container-fluid:after,.w-container:after,.w-row:after{clear:both}.w-center-block{display:block;margin-left:auto;margin-right:auto}.w-pull-right{float:right!important}.w-pull-left{float:left!important}.w-hide{display:none!important}.w-show{display:block!important}.w-invisible{visibility:hidden}.w-text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.w-hidden{display:none!important}.w-affix{position:fixed}.mec-image-popup-wrap{display:none}#wns-be-infobar.sticky{position:fixed;top:32px;background:#fff;z-index:9999;width:82%}.wns-be-main .wns-saved-settings.sticky{position:fixed;width:62.5%;top:111px;z-index:999999999999999999}#mec-search-settings{border-radius:2px;min-height:32px;box-shadow:0 3px 14px -5px rgba(0,0,0,.2),inset 0 1px 2px rgba(0,0,0,.07);padding:9px 10px 11px;margin-right:6px;color:#7c7772;font-size:12px;width:200px}#mec-search-settings::-webkit-input-placeholder{color:#7c7772}#mec-search-settings::-moz-placeholder{color:#7c7772}#mec-search-settings:-ms-input-placeholder{color:#7c7772}#mec-search-settings:-moz-placeholder{color:#7c7772}.mec-export-settings,.mec-import-settings{font-weight:700;border-radius:2px;box-shadow:0 3px 10px -4px #008aff;text-shadow:none;background:#008aff;background:linear-gradient(95deg,#36a2ff 0,#008aff 50%,#0072ff 100%);border:none;transition:.24s;padding:8px 32px;height:36px;letter-spacing:.2px;line-height:36px;font-size:13px;color:#fff;text-decoration:none;display:inline-block}.mec-export-settings:hover,.mec-import-settings:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 23px -7px rgba(0,0,0,.5);color:#fff}textarea.mec-import-settings-content{display:block;width:100%;min-height:120px;margin-bottom:25px;padding:10px 15px}.mec-import-options-notification{display:inline-block}.mec-import-options-notification .mec-message-import-error,.mec-import-options-notification .mec-message-import-success{display:inline-block;padding:15px 12px;margin-left:12px;opacity:0;visibility:hidden;font-weight:700}.mec-import-options-notification .mec-message-import-success{opacity:1;visibility:visible;border:2px solid green}.mec-import-options-notification .mec-message-import-error{opacity:1;visibility:visible;border:2px solid #e62117}.mec-export-settings:focus,.mec-import-settings:focus{color:#fff}.mec-import-settings-wrap{position:relative}.mec-loarder-wrap{position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(202,202,202,.7);z-index:9999}.mec-loarder-wrap.mec-settings-loader{top:34px}.mec-loarder{position:absolute;width:64px;height:64px;top:calc(50% - 32px);left:calc(50% - 36px)}.mec-loarder div{display:inline-block;position:absolute;left:6px;width:4px;background:#fff;animation:mec-loarder 1.2s cubic-bezier(0,.5,.5,1) infinite}.mec-loarder div:nth-child(1){left:27px;animation-delay:-.24s;background:#0075ff}.mec-loarder div:nth-child(2){left:36px;animation-delay:-.12s;background:#028bff}.mec-loarder div:nth-child(3){left:45px;animation-delay:0;background:#32a0ff}@keyframes mec-loarder{0%{top:6px;height:51px}100%,50%{top:19px;height:26px}}.w-box.support-page.searchbox{background:#008aff;background:linear-gradient(180deg,#36a2ff 0,#008aff 50%,#0072ff 100%);color:#fff;min-height:260px;text-align:center;border-radius:2px}#webnus-dashboard .search-form input{background:rgba(255,255,255,.2);border:none;width:50%;outline:0;color:rgba(255,255,255,.7);font-size:18px;border-radius:4px 0 0 4px;box-shadow:0 1px 2px 0 rgba(0,0,0,.03);-webkit-transition:background .4s,box-shadow .2s;transition:background .4s,box-shadow .2s;padding:20px 32px;margin:0}#webnus-dashboard .search-form button{background:rgba(255,255,255,.2);border:none;padding:20px 32px;margin-left:-2px;color:#fff;border-radius:0 4px 4px 0;font-size:18px;cursor:pointer;-webkit-transition:background .4s,box-shadow .2s;transition:background .4s,box-shadow .2s}#webnus-dashboard .search-form button:hover{background:#fff;color:#3a3c4c}.w-box.support-page.searchbox p{font-size:30px}.search-form input::-webkit-input-placeholder{color:rgba(255,255,255,.7)}.search-form input::-moz-placeholder{color:rgba(255,255,255,.7)}.search-form input:-ms-input-placeholder{color:rgba(255,255,255,.7)}.search-form input:-moz-placeholder{color:rgba(255,255,255,.7)}#webnus-dashboard .search-form input:active,#webnus-dashboard .search-form input:focus{box-shadow:0 10px 20px rgba(0,0,0,.14);background:#fff;color:#3a3c4c}#webnus-dashboard .search-form input:active::-webkit-input-placeholder,#webnus-dashboard .search-form input:focus::-webkit-input-placeholder{color:#3a3c4c}#webnus-dashboard .search-form input:active::-moz-placeholder,#webnus-dashboard .search-form input:focus::-moz-placeholder{color:#3a3c4c}#webnus-dashboard .search-form input:active:-ms-input-placeholder,#webnus-dashboard .search-form input:focus:-ms-input-placeholder{color:#3a3c4c}#webnus-dashboard .search-form input:active:-moz-placeholder,#webnus-dashboard .search-form input:focus:-moz-placeholder{color:#3a3c4c}#webnus-dashboard .w-box.support-page.mec-ticksy{text-align:center;min-height:260px}#webnus-dashboard .w-box.support-page.mec-ticksy p{font-size:20px;width:70%;margin:0 auto;margin-bottom:40px;margin-top:40px}#webnus-dashboard .w-box.support-page.mec-ticksy a{color:#fff;font-weight:500;border-radius:2px;box-shadow:0 3px 10px -4px #008aff;text-shadow:none;background:#008aff;background:linear-gradient(95deg,#36a2ff 0,#008aff 50%,#0072ff 100%);border:none;transition:.24s;padding:12px 20px;cursor:pointer;margin-bottom:40px;display:inline-block}#webnus-dashboard .w-box.support-page.mec-ticksy a:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 23px -7px rgba(0,0,0,.5)}.mec-faq-accordion>.mec-faq-accordion-content{display:none}#webnus-dashboard .mec-faq-accordion-trigger a{font-size:16px;padding:12px;background:#f1f1f1;display:block;color:#222;line-height:17px;outline:0}.mec-faq-accordion-trigger{margin-bottom:5px;position:relative}#webnus-dashboard .mec-faq-accordion-trigger a:after{font-family:simple-line-icons;content:"\e095";position:absolute;right:12px;font-weight:700}.mec-faq-accordion-content{padding:5px 14px 25px}#webnus-dashboard .mec-faq-accordion-trigger a.active:after{content:"\e082"}#webnus-dashboard .support-page-links a{background-color:#fff;color:#fff;border-radius:2px;padding:13px 24px;font-size:12px;letter-spacing:1px;font-weight:600;text-transform:uppercase}#webnus-dashboard .support-page-links a:hover,#webnus-dashboard .w-box.support-page.videobox .w-button a:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 21px -5px rgba(0,0,0,.5)}#webnus-dashboard .support-page-links{display:inline-block;margin:12px 4px 16px 0}.support-page-links.link-to-doc a{background:#4cbf67;background:linear-gradient(95deg,#6fe08a 0,#58cf74 50%,#36cb58 100%);box-shadow:0 5px 10px -5px #4cbf67}.support-page-links.link-to-videos a{background:#ff876c;background:linear-gradient(95deg,#ff876c 0,#ff7455 50%,#ff5a35 100%);box-shadow:0 5px 10px -5px #ff876c}.support-page-links.link-to-articles a{background:#b092e6;background:linear-gradient(95deg,#b092e6 0,#9b70e8 50%,#8e5cea 100%);box-shadow:0 5px 10px -5px #b092e6}.w-box.support-page.articles-box .w-box-content a{display:block;padding:6px 0}#webnus-dashboard .w-box.support-page.videobox .w-button a{color:#fff;font-size:10px;padding:5px 15px;min-height:10px;font-weight:500;border-radius:22px;box-shadow:0 3px 10px -4px #ff5a35;text-shadow:none;background:#ff5a35;background:linear-gradient(95deg,#ff876c 0,#ff7455 50%,#ff5a35 100%);border:none;transition:.24s}.w-box.support-page.articles-box,.w-box.support-page.faq-box{min-height:500px}.w-box.support-page.videobox{border-radius:2px;min-height:282px;box-shadow:0 1px 6px rgba(0,0,0,.039)!important}#webnus-dashboard .w-box.support-page.videobox .w-button a i{margin-right:6px}.support-page .w-box-content ul{margin-top:5px;padding-left:5px}.support-page .w-box-content ul li{font-size:13px}.support-page .w-box-content ul li i{font-size:17px;vertical-align:text-bottom;margin-right:7px;color:#999}.w-box.mec-activation{background:#fff url(../img/dp-dsb-support.jpg) no-repeat top right}.w-box.mec-activation .w-box-head{color:#40d8f0;width:75%}.w-box.mec-activation .w-box-content{padding:10px 30px}.w-box.mec-activation input[type=radio]{display:none}.w-box.mec-activation input[type=radio]+label{color:#000;font-size:13px;line-height:14px!important;color:#7b7b7b}.w-box.mec-activation input[type=radio].checked+label{color:#40d8f0}.w-box.mec-activation input[type=radio]+label span{display:inline-block;margin:-2px 6px 0 0;vertical-align:middle;cursor:pointer;height:14px;width:14px;text-align:center;background-color:#fff;border:1px solid #d4d4d4;border-radius:100%;box-shadow:0 2px 16px -2px rgba(0,0,0,.2);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative}.w-box.mec-activation input[type=radio].checked+label span{background-color:#40d8f0;border-color:#40d8f0;box-shadow:0 2px 14px -3px #40d8f0}.w-box.mec-activation input[type=radio].checked+label span:after{content:'';display:block;position:absolute;top:4px;left:4px;width:4px;height:4px;background:#fff;border-radius:100%}.w-box.mec-activation .LicenseType label{padding-right:20px;font-weight:500}.w-box.mec-activation .LicenseField{display:inline-block;position:relative;margin-top:20px}.w-box.mec-activation input[name=MECPurchaseCode]{box-shadow:inset 0 1px 2px rgba(0,0,0,.07);min-width:220px;background:#f4f4f4;border:none;border-radius:33px;width:500px;min-height:50px;margin:0;padding-left:20px;text-align:left}#webnus-dashboard .w-box.mec-activation input[type=submit]{height:40px;line-height:40px;font-weight:600;border:none;cursor:pointer;padding:0 30px;border-radius:33px;color:#fff;letter-spacing:1px;text-transform:uppercase;font-size:12px;background:#4cbf67;background:linear-gradient(95deg,#6fe08a 0,#58cf74 50%,#36cb58 100%);box-shadow:0 5px 10px -5px #4cbf67;transition:all .28s ease;position:absolute;right:5px;top:4px;font-size:12px}#webnus-dashboard .w-box.mec-activation input[type=submit]:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 23px -7px rgba(0,0,0,.5)}#MECActivation .MECPurchaseStatus,.addon-activation-form .MECPurchaseStatus{display:inline-block;width:40px;height:40px;text-align:center;padding-top:9px;color:#fff;font-weight:700;font-size:18px;border-radius:50%;padding-top:8px;position:absolute;right:-51px;top:calc(50% - 20px)}.MECPurchaseStatus:after,.MECPurchaseStatus:before{position:absolute;border-radius:50px;background:#fff;content:'';transform:rotate(45deg)}.MECPurchaseStatus.PurchaseError:before{width:22px;height:4px;right:9px;top:18px;transform:rotate(45deg)}.MECPurchaseStatus.PurchaseError:after{width:22px;height:4px;right:9px;top:18px;transform:rotate(-45deg)}.MECPurchaseStatus.PurchaseSuccess:before{width:13px;height:4px;right:19px;top:21px;transform:rotate(45deg)}.MECPurchaseStatus.PurchaseSuccess:after{width:22px;height:4px;right:5px;top:18px;transform:rotate(-45deg)}#MECActivation .MECPurchaseStatus.PurchaseError,.addon-activation-form .MECPurchaseStatus.PurchaseError{background:#ff876c;background:linear-gradient(95deg,#ff876c 0,#ff7455 50%,#ff5a35 100%);box-shadow:0 5px 10px -5px #ff876c}#MECActivation .MECPurchaseStatus.PurchaseSuccess,.addon-activation-form .MECPurchaseStatus.PurchaseSuccess{background:#4cbf67;background:linear-gradient(95deg,#6fe08a 0,#58cf74 50%,#36cb58 100%);box-shadow:0 5px 10px -5px #4cbf67}.wna-spinner-wrap{position:absolute;background:#000;width:509px;height:64px;top:-8px;border-radius:50px;z-index:999;background-color:#fff;opacity:.9}.wna-spinner{width:40px;height:40px;position:relative;margin:6px auto}.wna-spinner .double-bounce1,.wna-spinner .double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#40d8f0;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:sk-bounce 2s infinite ease-in-out;animation:sk-bounce 2s infinite ease-in-out}.wna-spinner .double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}#MECActivation .MECLicenseMessage,.addon-activation-form .MECLicenseMessage{margin-top:24px;color:#f64;max-width:570px}.box-addon-activation-toggle-content,.box-addon-activation-toggle-head{display:none}.addon-activation-form h3{font-size:15px;font-weight:400;margin:34px 0 -7px}.box-addon-activation-toggle-head{line-height:1.5;font-size:16px;margin-top:20px;cursor:pointer}.box-addon-activation-toggle-head i{margin-right:7px;cursor:pointer;font-weight:700}#mec-advanced-wraper div:first-child>ul{display:block;margin:5px 0;padding:5px 0;width:390px;border:1px solid #e1e2e3;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.05)}#mec-advanced-wraper div:first-child>ul span{display:none}#mec-advanced-wraper div:first-child>ul *{display:inline-block;background:#fff;font-size:12px;color:#717273;text-align:center}#mec-advanced-wraper div:first-child>ul>li{width:60px;font-weight:700;margin:0 10px 0 0;padding:4px 0;border-right:1px solid #e1e2e3}#mec-advanced-wraper div:first-child>ul>ul>li{margin:0;padding:2px 10px;cursor:pointer;border-radius:2px;transition:all .18s ease}#mec-advanced-wraper div:first-child>ul>ul>li:hover,.mec-active{background:#008aff!important;color:#fff!important}@-webkit-keyframes sk-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.w-col-sm-3 .w-box.addon{min-height:auto;box-shadow:0 3px 16px -5px rgba(0,0,0,.1);border-radius:2px}.w-box-child.mec-addon-box{padding:20px 20px}.mec-addon-box-head{border-bottom:1px solid #e8e8e8;padding-bottom:5px;margin-bottom:14px;position:relative}.mec-addon-box-version{position:relative;background:#eaeaea;border-radius:1px;padding:0 8px;color:#5a5a5a;font-size:11px;letter-spacing:.2px;line-height:21px;display:inline-block;margin:3px 0}.mec-addon-box-title{font-weight:700;font-size:18px;line-height:25px}.mec-addon-box-title a span{color:#444;font-size:15px}.mec-addon-box-content p{color:#777;font-size:13px}.mec-addon-box-mec-version{background:#f3f3f3;padding:10px;font-size:13px}#webnus-dashboard .addons-page-links{display:inline-block;margin:12px 4px 16px 0}#webnus-dashboard .addons-page-links a{background-color:#fff;color:#fff;border-radius:2px;padding:13px 24px;font-size:12px;letter-spacing:1px;font-weight:600;text-transform:uppercase}.addons-page-links.link-to-purchase a{background:#4cbf67;background:linear-gradient(95deg,#6fe08a 0,#58cf74 50%,#36cb58 100%);box-shadow:0 5px 10px -5px #4cbf67}.addons-page-links.link-to-install-addons a{background:#b092e6;background:linear-gradient(95deg,#b092e6 0,#9b70e8 50%,#8e5cea 100%);box-shadow:0 5px 10px -5px #b092e6}#webnus-dashboard .addons-page-links a:hover,#webnus-dashboard .w-box.addons-page.videobox .w-button a:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 21px -5px rgba(0,0,0,.5)}.mec-addon-box-footer{margin-top:25px}#webnus-dashboard .mec-addon-box-footer a{font-weight:500;border-radius:2px;box-shadow:0 3px 10px -4px #008aff;text-shadow:none;background:#008aff;background:linear-gradient(95deg,#36a2ff 0,#008aff 50%,#0072ff 100%);border:none;transition:.24s;padding:7px 19px;margin-top:10px;display:inline-block;letter-spacing:.2px;color:#fff;width:100%;text-align:center}#webnus-dashboard .mec-addon-box-footer a.mec-addon-box-intro{box-shadow:0 3px 10px -4px #ff5a35;background:linear-gradient(95deg,#ff876c 0,#ff7455 50%,#ff5a35 100%)}#webnus-dashboard .mec-addon-box-footer a:hover{background:#222!important;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%)!important;box-shadow:0 5px 23px -7px rgba(0,0,0,.5)!important;cursor:pointer!important}#webnus-dashboard .mec-addon-box-footer a i{margin-right:6px;color:#fff}@media(max-width:1366px){.wns-be-container #wns-be-content{padding:5px 15px 0}.mec-form-row .mec-col-8 label{font-size:10px}#webnus-dashboard .mec-tooltip .box p,.mec-tooltip .box p{font-size:10px}}@media (max-width:780px){.wns-be-container #wns-be-content{padding:10px 0}.wns-be-container .mec-form-row .mec-col-8 label{width:50%;display:block}.wns-be-container .mec-form-row input[type=checkbox]{width:14px;height:14px}.wns-be-container .wns-be-sidebar li .subsection a{padding-left:30px}.wns-be-container .wns-be-sidebar{width:200px}.wns-be-container .wns-be-main{margin-left:200px}.wns-be-container .mec-tooltip .box{min-width:235px!important}.wns-be-container .mec-tooltip .box p{font-size:12px!important}#wns-be-infobar.sticky{position:unset}}@media (max-width:480px){.wns-be-container .wns-be-sidebar{width:100%;position:unset;float:none}.wns-be-container .wns-be-main{margin-left:0;width:100%;position:unset}.wns-be-container{margin-top:50px}.wns-be-container #wns-be-infobar:before{width:100%}.wns-be-container #wns-be-infobar{height:150px}#mec-search-settings{margin-top:80px;width:181px}}.addons-page-error,.addons-page-notice{display:block;margin-top:15px;margin-bottom:0;background:#fff;border-left:4px solid #00a0d2;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:1px 12px}.addons-page-error p,.addons-page-notice p{margin:.5em 0;padding:2px;font-size:13px}.addons-page-error{border-left-color:#dc3232}.mec-addon-box-comingsoon{background:#eaeaea;padding:8px 11px;color:#5a5a5a;font-size:14px;font-weight:500;text-align:center}.mec-addons .w-row .w-col-sm-3:nth-child(4n+1){clear:left}@media (min-width:960px){#webnus-dashboard .mec-addon-box-footer .w-button{text-align:right}}@media (min-width:1401px){.mec-addon-box-title a span{font-size:17px}}.mec-pro-notice{margin-top:24px;line-height:30px}.mec-pro-notice .info-msg{padding:50px 30px;margin-bottom:0}#webnus-dashboard .mec-pro-notice .info-msg{background:#fff;box-shadow:0 1px 16px rgba(0,0,0,.034);text-align:center;color:#000}#webnus-dashboard a.info-msg-link{background:#e66f52;background:linear-gradient(95deg,#ff8162 0,#e66f52 50%,#ff4c20 100%);box-shadow:0 5px 10px -5px #e66f52;border-radius:2px;padding:12px 50px;font-size:16px;line-height:24px;border:none;margin:20px auto 0;color:#fff;transition:all .3s ease;display:inline-block}#webnus-dashboard a.info-msg-link:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 21px -5px rgba(0,0,0,.5)}#webnus-dashboard .info-msg p{width:70%;margin:0 auto;line-height:1.8}#webnus-dashboard .info-msg-coupon{font-size:13px;color:#777;max-width:600px;line-height:1.68;margin:25px auto 0}#webnus-dashboard .info-msg-coupon strong{font-weight:700;color:#19ce18}.info-msg .socialfollow{padding-top:20px}.info-msg .socialfollow a{margin:0 2px;display:inline-block}.info-msg .socialfollow a i{background:#96a4b1;color:#fff;padding:6px;border-radius:3px;font-size:18px;box-shadow:0 2px 3px rgba(0,0,0,.1);transition:all .25s}.info-msg .socialfollow a:hover i{background:#008aff}.mec-intro-section .w-box-content{text-align:center}.mec-intro-section .w-box-content.mec-intro-section-welcome{max-width:600px;margin:0 auto}.mec-intro-section .w-box-content.mec-intro-section-welcome h3{font-size:27px}a.mec-intro-section-link-tag.button.button-hero{margin:0 10px 40px}a.mec-intro-section-link-tag.button.button-primary.button-hero{color:#fff!important}a.mec-intro-section-link-tag.button.button-secondary.button-hero{color:#000!important}.mec-intro-section-ifarme iframe{border:1px solid #e7e7e7;border-radius:3px;padding:10px;box-shadow:0 3px 10px -6px rgba(0,0,0,.2)}.w-box-content.mec-intro-section-welcome p{margin-bottom:0}.mec-tooltip a:focus{box-shadow:none}#mec_booking_form .mec-options-fields,#mec_modules_form .mec-options-fields,#mec_settings_form .mec-options-fields,#mec_single_form .mec-options-fields{padding-bottom:150px!important}#mec_taxes_fees_container_toggle{margin-bottom:60px}#mec_taxes_fees_container_toggle{margin-bottom:60px}.wns-be-sidebar li{position:relative}.wns-be-sidebar li .submneu-hover{position:absolute;top:-1px;right:-222px;width:220px;z-index:9;background:#fff;border:1px;border-style:solid;border-color:#dedede;margin:0;overflow:visible;opacity:0;visibility:hidden;transition:all .23s ease;padding-top:8px;padding-bottom:12px}.wns-be-sidebar li:hover{background:#fff}.wns-be-sidebar li:hover .submneu-hover{opacity:1;visibility:visible}.wns-be-sidebar li .submneu-hover a{background:#fff;color:#636363;opacity:1;font-size:12px;padding:6px 4px 6px 26px}.wns-be-sidebar li .submneu-hover a:hover{background:#f6f6f6;color:#222}.wns-be-sidebar li .submneu-hover:before{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:-15px;top:14px;border-right-color:#c5c5c5;right:0}.wns-be-sidebar li .submneu-hover:after{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:-14px;top:14px}.wns-be-sidebar li a:focus,.wns-be-sidebar li:focus{outline:-webkit-focus-ring-color auto 0;border:0;box-shadow:none}@media (max-width:480px){.wns-be-sidebar li .submneu-hover{width:175px;right:0}.wns-be-sidebar li .submneu-hover a{font-size:11px;padding:5px 5px 5px 20px}}.mec-tooltip:hover:after,.mec-tooltip:hover:before{display:none}.mec-tooltip{display:inline-flex;bottom:7px}.mec-tooltip .box{min-width:300px;max-width:600px;display:inline-block;left:26px;top:50%;transform:translateY(-50%);padding:0;margin-top:8px;background-color:#535a61;color:#fff;font-weight:300;font-size:14px;letter-spacing:.5px;line-height:1.3;position:absolute;z-index:9999999;box-sizing:border-box;border-radius:6px;box-shadow:0 4px 45px -8px #444b50;visibility:hidden;opacity:0;transition:opacity .23s}#webnus-dashboard .mec-tooltip .box p,.mec-tooltip .box p{color:#fff;font-size:14px;line-height:1.3;margin:0}.mec-tooltip:hover .box{visibility:visible;opacity:1}.mec-tooltip:hover .box{padding:20px;border-radius:8px}.mec-tooltip .box h5{color:#fff;font-size:17px;font-weight:600;margin:-30px -20px;padding:20px 0;text-align:center;margin-bottom:10px;background:#3a3f44;border-bottom:1px solid #32363a;border-radius:6px 6px 0 0;z-index:9999}#webnus-dashboard .mec-tooltip .box p a,.mec-tooltip .box p a{color:#40d9f1;margin-top:10px;margin-left:0;font-weight:400;position:relative;text-decoration:none;display:block;width:max-content}.mec-tooltip .box a:hover{color:#f90}.mec-tooltip .box:after{display:block;position:absolute!important;top:100%!important;right:50%!important;margin-top:-6px!important;margin-right:-6px!important;width:12px!important;height:24px!important;overflow:hidden!important;transform:rotate(-90deg)!important}.mec-tooltip .box:before{display:block;content:''!important;position:absolute!important;width:12px;height:12px;left:-10px!important;top:50%!important;transform:translate(50%,-50%) rotate(-45deg)!important;background-color:#535a61!important;box-shadow:0 8px 9px -4px #535a61!important;z-index:0!important}.mec-tooltip .box.top{left:50%;top:0;transform:translate(-50%,-100%);margin-top:0;margin-left:-10px}.mec-tooltip .box.top:after{top:50%!important;right:100%!important}.mec-tooltip .box.top:before{left:50%!important;top:100%!important}.mec-tooltip .box.bottom{left:50%;top:auto;bottom:0;transform:translate(-50%,100%);margin-bottom:-20px;margin-left:-10px}.mec-tooltip .box.bottom:after{top:0!important;right:50%!important;background-color:#3a3f44!important}.mec-tooltip .box.bottom:before{left:50%!important;top:-7px!important;transform:translateX(-50%);background-color:#3a3f44!important}.mec-tooltip .box.left{left:auto;right:26px;top:50%;transform:translateY(-50%)}.mec-tooltip .box.left:before{right:0!important;left:auto!important;top:50%!important}form#mec_reg_fields_form input[type=radio]:before{content:"";display:inline-block;background:#fff;border-radius:18px;width:14px;height:14px;margin:-1px 0 0 -2px;cursor:pointer;border:2px solid #e1e7ed;box-shadow:0 2px 15px -3px rgba(69,77,89,.32)}form#mec_reg_fields_form input[type=radio]:checked:before{border:7px solid #008aff;background:#fff;box-shadow:0 3px 16px -3px #008aff;width:4px;height:4px}form#mec_reg_fields_form input[type=radio]{min-height:0;margin-right:6px}form#mec_reg_fields_form label{margin-right:20px}@media(min-width:1200px) and (max-width:1366px){.mec-tooltip .box.left{left:50%;top:0;transform:translate(-50%,-100%);margin-top:0;margin-left:-10px}.mec-tooltip .box.left:after{top:50%!important;right:100%!important}.mec-tooltip .box.left:before{left:50%!important;top:100%!important}.mec-tooltip .box{min-width:225px}.mec-tooltip .box h5{font-size:15px}.mec-tooltip .box .content{font-size:12px}}@media(max-width:1366px){.wns-be-container .wns-be-group-tab p{margin-top:0}}.mec-addons-notification-box-wrap .w-col-sm-12{padding:0}.mec-addons-notification-box-wrap img{width:auto}.mec-addons-notification-box-image{width:555px;display:inline-block;vertical-align:top}.mec-addons-notification-box-content{width:calc(100% - 559px);display:inline-block}.mec-addons-notification-box-content p{margin-top:1%;line-height:1.5;font-size:16px}.mec-addons-notification-box-content .w-box-content{padding-top:0;padding-bottom:0}.mec-addons-notification-box-content ol{font-size:16px}.mec-addons-notification-box-content a{background:#38d5ed;color:#fff!important;padding:10px 26px;margin-top:5px;display:inline-block;border-radius:3px;text-transform:capitalize;font-size:16px;letter-spacing:.4px;transition:all .1s ease;font-weight:600;text-decoration:none}.mec-addons-notification-box-content a:hover{background:#000}.w-clearfix.w-box.mec-addons-notification-box-wrap span{right:0;left:unset;cursor:pointer;background:#fff;padding:0 16px}.w-clearfix.w-box.mec-addons-notification-box-wrap span i{font-size:28px;vertical-align:sub;color:#f2113e}.wns-be-container .mec-addons-notification-wrap{padding:0;margin:0}.wns-be-container .mec-addons-notification-wrap .w-col-sm-12{padding:0}.wns-be-container .w-box{margin-top:0}.wns-be-container.mec-addons-notification-set-box{margin-right:15px;margin-top:50px;margin-bottom:27px}@media(max-width:1200px){.mec-addons-notification-box-content,.mec-addons-notification-box-image{width:100%;display:block}.mec-addons-notification-box-image{text-align:center}}@media(max-width:768px){.mec-addons-notification-box-image img{width:100%;height:auto}}body.rtl .wns-be-sidebar{width:260px;float:right;position:relative}body.rtl .wns-be-main{margin-left:0;border-left:0;margin-right:260px;border-right:1px solid #dedede}body.rtl .w-box.mec-activation .LicenseField{direction:rtl}body.rtl .w-box.mec-activation input[name=MECPurchaseCode]{text-align:right;padding-right:20px}body.rtl #MECActivation .MECPurchaseStatus,body.rtl .addon-activation-form .MECPurchaseStatus{right:auto;left:-51px}body.rtl #webnus-dashboard .w-box.mec-activation input[type=submit]{right:auto;left:5px}body.rtl .wns-be-sidebar .wns-be-group-menu li a{padding:13px 20px 13px 4px}body.rtl .wns-be-sidebar .wns-be-group-tab-link-a span.wns-be-group-menu-title{padding-left:0;padding-right:24px}body.rtl .wns-be-sidebar .has-sub span.extra-icon{float:left}body.rtl .wns-be-sidebar .wns-be-group-tab-link-a span.extra-icon i{right:auto;left:10px}body.rtl .wns-be-sidebar .wns-be-group-menu li .subsection li.active a:after,body.rtl .wns-be-sidebar .wns-be-group-menu li .subsection li.active a:before{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:transparent;border-left-color:#fff;right:auto;left:-1px;top:10px}body.rtl .wns-be-sidebar .wns-be-group-menu li .subsection li.active a:before{border-right-color:transparent;border-left-color:#c5c5c5;right:auto;left:0}body.rtl .mec-col-1,body.rtl .mec-col-10,body.rtl .mec-col-11,body.rtl .mec-col-12,body.rtl .mec-col-2,body.rtl .mec-col-3,body.rtl .mec-col-4,body.rtl .mec-col-5,body.rtl .mec-col-6,body.rtl .mec-col-7,body.rtl .mec-col-8,body.rtl .mec-col-9{float:right;margin:0 1% 0 0}body.rtl .wns-be-sidebar li .submneu-hover{right:auto;left:-222px}body.rtl .wns-be-sidebar li .submneu-hover:after{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:auto;right:-1px;top:14px}body.rtl #mec_styles_form #mec_styles_CSS{direction:ltr}body.rtl .w-box.mec-activation{-moz-transform:scaleY(-1);-o-transform:scaleY(-1);-webkit-transform:scaleY(-1);transform:scaleX(-1)}body.rtl .w-box.mec-activation .w-box-content,body.rtl .w-box.mec-activation .w-box-head{-moz-transform:scaleY(-1);-o-transform:scaleY(-1);-webkit-transform:scaleY(-1);transform:scaleX(-1);display:block}body.rtl .w-box.mec-activation .w-box-head{width:100%}body.rtl .wns-be-container #wns-be-infobar:before{left:auto;right:0}body.rtl .wns-be-container .dpr-btn.dpr-save-btn{float:left}body.rtl .wns-be-container .wns-be-group-tab h2:before,body.rtl .wns-be-container .wns-be-group-tab h4:before{left:auto;right:0;margin-right:0;margin-left:5px}body.rtl #mec_gateways_form .mec-tooltip{float:left}div#plugin-information-content .section{margin-top:-600px}.mec-details-addons-container{margin-top:20px}.mec-details-addons-wrap img{float:left;width:19%;margin-right:17px}.mec-details-addons-wrap{clear:both;margin-bottom:80px;display:block;position:relative}.mec-details-addons-wrap a{text-decoration:none}.mec-details-addons-wrap p{float:left;width:340px;margin-top:0;margin-bottom:30px}.mec-details-addons-title{font-weight:700}.mec-details-addons-title a{color:#444}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx{border-radius:10px!important;box-shadow:0 4px 38px rgba(0,0,0,.14)!important}body .crisp-client .crisp-1rjpbb7 .crisp-13qutdl,body .crisp-client .crisp-1rjpbb7 .crisp-13qutdl *,body .crisp-client .crisp-1rjpbb7 .crisp-9dgo7z,body .crisp-client .crisp-1rjpbb7 .crisp-9dgo7z *{font-family:proxima-nova,-apple-system,BlinkMacSystemFont,"Segoe UI",Catamaran,sans-serif!important}body .crisp-client .crisp-1rjpbb7 .crisp-145mbcr,body .crisp-client .crisp-1rjpbb7 .crisp-1jrqqbm:hover{background-color:#fff!important}body .crisp-client .crisp-1rjpbb7 .crisp-14u434g{border-color:#e7e8e9!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-1bkorcf .crisp-1vzg1qq{font-size:20px!important;width:14px!important;height:19px!important;opacity:.85}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-1bkorcf .crisp-1vzg1qq:hover{opacity:.99}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-1sps3eb .crisp-1vd2grm .crisp-12w4w1a{font-size:13px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-1sps3eb .crisp-1vd2grm .crisp-12w4w1a::-webkit-input-placeholder{color:#717273!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv[data-from=visitor] .crisp-z89v5n .crisp-162m9xf{background-color:#008aff!important;color:#fff!important;box-shadow:none!important;border-radius:5px!important;padding:15px 25px 15px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv[data-from=visitor] .crisp-z89v5n .crisp-162m9xf .crisp-1o2g4mc{color:#fff!important;font-size:13px!important;letter-spacing:.3px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv .crisp-z89v5n .crisp-162m9xf{background-color:#f1f2f3!important;border-radius:5px!important;padding:15px 25px 15px!important;box-shadow:none!important;color:#121314!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv[data-type=audio] .crisp-z89v5n .crisp-162m9xf{background-color:#d1d7dc!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv[data-from=operator] .crisp-z89v5n .crisp-1o2g4mc{color:#121314!important;-webkit-text-fill-color:#121314!important;font-size:13px!important;letter-spacing:.3px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv .crisp-mkirz6 .crisp-12qaym5 .crisp-39hskb{opacity:.4;margin-right:5px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv .crisp-mkirz6 .crisp-12qaym5 .crisp-ehr6mw{opacity:.68;font-size:12px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg{background-image:linear-gradient(125deg,#008aff -10%,#0066b1 100%)!important;height:110px!important;padding-top:35px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-rhv8pz .crisp-1uw6f17,body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-rhv8pz .crisp-85evuk,body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-rhv8pz .crisp-nu40j6{font-size:17px!important;line-height:28px!important;padding-top:10px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-kquevr .crisp-x94m06{background-color:#008aff!important;background-image:linear-gradient(125deg,#008aff -10%,#008af0 100%)!important;box-shadow:0 5px 34px -6px #008aff!important}body .crisp-client .crisp-1rjpbb7 .crisp-4oo1n4{background-color:transparent!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx[data-chat-status=ongoing] .crisp-1784wh6 .crisp-1xmtdlg .crisp-172kolj{margin-top:-10px!important}body .crisp-client .crisp-1rjpbb7[data-last-operator-face=false] .crisp-1rf4xdh .crisp-kquevr .crisp-x94m06 .crisp-16qgsyi .crisp-101bp3x[data-is-ongoing=false]{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1OCIgaGVpZ2h0PSI1NSIgdmlld0JveD0iMCAwIDU4IDU1Ij4NCiAgPGcgaWQ9ImNoYXQtc3ZncmVwby1jb21fMV8iIGRhdGEtbmFtZT0iY2hhdC1zdmdyZXBvLWNvbSAoMSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTEuNSkiPg0KICAgIDxwYXRoIGlkPSJQYXRoXzEiIGRhdGEtbmFtZT0iUGF0aCAxIiBkPSJNMjksMS41YzE2LjAxNiwwLDI5LDExLjY0MSwyOSwyNmEyNC4wMSwyNC4wMSwwLDAsMS00LjgsMTQuMzE4Yy40LDQuNzQ1LDEuNTQyLDExLjQyOCw0LjgsMTQuNjgyLDAsMC05Ljk0My0xLjQtMTYuNjc3LTUuNDYybC0uMDIyLjAwOWMtMi43NjQtMS44LTUuNTMyLTMuNjU2LTYuMS00LjEyNmExLDEsMCwwLDAtMS4zMy0uMjc3LDEuMDE3LDEuMDE3LDAsMCwwLS40ODkuODQ4Yy0uMDEuNjIyLjAwNS43ODQsNS41ODUsNC40MjFBMzEuOTE0LDMxLjkxNCwwLDAsMSwyOSw1My41Yy0xNi4wMTYsMC0yOS0xMS42NDEtMjktMjZTMTIuOTg0LDEuNSwyOSwxLjVaIiBmaWxsPSIjZmZmIi8+DQogICAgPGNpcmNsZSBpZD0iRWxsaXBzZV8xIiBkYXRhLW5hbWU9IkVsbGlwc2UgMSIgY3g9IjMiIGN5PSIzIiByPSIzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMiAyNC41KSIgZmlsbD0iIzAwOGFmZiIvPg0KICAgIDxjaXJjbGUgaWQ9IkVsbGlwc2VfMiIgZGF0YS1uYW1lPSJFbGxpcHNlIDIiIGN4PSIzIiBjeT0iMyIgcj0iMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjYgMjQuNSkiIGZpbGw9IiMwMDhhZmYiLz4NCiAgICA8Y2lyY2xlIGlkPSJFbGxpcHNlXzMiIGRhdGEtbmFtZT0iRWxsaXBzZSAzIiBjeD0iMyIgY3k9IjMiIHI9IjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwIDI0LjUpIiBmaWxsPSIjMDA4YWZmIi8+DQogIDwvZz4NCjwvc3ZnPg0K)!important;height:31px!important;top:16px!important;left:14px!important}body .csh-category-item a h6{text-align:left}.mec-form-row.mec-syn-schedule{background:#f7f7f7;padding:20px;border:1px solid #eee;box-shadow:0 1px 11px rgba(0,0,0,.034);margin-bottom:20px}.mec-form-row.mec-syn-schedule p{padding-left:26px}.mec-form-row.mec-syn-schedule h2{margin-top:0}.mec-form-row.mec-syn-schedule h4{margin:10px 0}li.wns-be-group-menu-li.mec-settings-menu .mec-settings-submenu{position:absolute;top:-1px;right:-222px;width:220px;z-index:9;background:#fff;border:1px;border-style:solid;border-color:#dedede;margin:0;overflow:visible;opacity:0;visibility:hidden;transition:all .23s ease;padding-top:8px;padding-bottom:12px}li.wns-be-group-menu-li.mec-settings-menu:hover>.mec-settings-submenu{visibility:visible;opacity:1}.mec-settings-menu .mec-settings-submenu:before{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:-15px;top:14px;border-right-color:#c5c5c5;right:0}.mec-settings-menu .mec-settings-submenu:after{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:-14px;top:14px}.wns-be-sidebar .mec-settings-menu .mec-settings-submenu a{background:#fff;color:#636363;opacity:1;font-size:12px;padding:6px 4px 6px 26px}
2
  * Bootstrap v3.3.7 (http://getbootstrap.com)
3
  * Copyright 2011-2016 Twitter, Inc.
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */#webnus-dashboard button,#webnus-dashboard input,#webnus-dashboard select,#webnus-dashboard textarea{font-family:inherit;font-size:inherit;line-height:inherit}#webnus-dashboard a{color:#337ab7;text-decoration:none}#webnus-dashboard a:focus,#webnus-dashboard a:hover{color:#23527c}#webnus-dashboard a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}#webnus-dashboard figure{margin:0}#webnus-dashboard img{vertical-align:middle}.w-img-responsive{display:block;max-width:100%;height:auto}.w-img-rounded{border-radius:6px}.w-img-thumbnail{padding:4px;line-height:1w-42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0w-2s ease-in-out;-o-transition:all 0w-2s ease-in-out;transition:all 0w-2s ease-in-out;display:inline-block;max-width:100%;height:auto}.w-img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.w-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.w-sr-only-focusable:active,.w-sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.w-container,.w-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}[role=button]{cursor:pointer}@media (min-width:768px){.w-container{width:750px}}@media (min-width:992px){.w-container{width:970px}}@media (min-width:1200px){.w-container{width:1170px}}.w-row{margin-left:-15px;margin-right:-15px}.w-col-lg-1,.w-col-lg-10,.w-col-lg-11,.w-col-lg-12,.w-col-lg-2,.w-col-lg-3,.w-col-lg-4,.w-col-lg-5,.w-col-lg-6,.w-col-lg-7,.w-col-lg-8,.w-col-lg-9,.w-col-md-1,.w-col-md-10,.w-col-md-11,.w-col-md-12,.w-col-md-2,.w-col-md-3,.w-col-md-4,.w-col-md-5,.w-col-md-6,.w-col-md-7,.w-col-md-8,.w-col-md-9,.w-col-sm-1,.w-col-sm-10,.w-col-sm-11,.w-col-sm-12,.w-col-sm-2,.w-col-sm-3,.w-col-sm-4,.w-col-sm-5,.w-col-sm-6,.w-col-sm-7,.w-col-sm-8,.w-col-sm-9,.w-col-xs-1,.w-col-xs-10,.w-col-xs-11,.w-col-xs-12,.w-col-xs-2,.w-col-xs-3,.w-col-xs-4,.w-col-xs-5,.w-col-xs-6,.w-col-xs-7,.w-col-xs-8,.w-col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.w-col-xs-1,.w-col-xs-10,.w-col-xs-11,.w-col-xs-12,.w-col-xs-2,.w-col-xs-3,.w-col-xs-4,.w-col-xs-5,.w-col-xs-6,.w-col-xs-7,.w-col-xs-8,.w-col-xs-9{float:left}.w-col-xs-12{width:100%}.w-col-xs-11{width:91.66666667%}.w-col-xs-10{width:83.33333333%}.w-col-xs-9{width:75%}.w-col-xs-8{width:66.66666667%}.w-col-xs-7{width:58.33333333%}.w-col-xs-6{width:50%}.w-col-xs-5{width:41.66666667%}.w-col-xs-4{width:33.33333333%}.w-col-xs-3{width:25%}.w-col-xs-2{width:16.66666667%}.w-col-xs-1{width:8w-33333333%}.w-col-xs-pull-12{right:100%}.w-col-xs-pull-11{right:91.66666667%}.w-col-xs-pull-10{right:83.33333333%}.w-col-xs-pull-9{right:75%}.w-col-xs-pull-8{right:66.66666667%}.w-col-xs-pull-7{right:58.33333333%}.w-col-xs-pull-6{right:50%}.w-col-xs-pull-5{right:41.66666667%}.w-col-xs-pull-4{right:33.33333333%}.w-col-xs-pull-3{right:25%}.w-col-xs-pull-2{right:16.66666667%}.w-col-xs-pull-1{right:8w-33333333%}.w-col-xs-pull-0{right:auto}.w-col-xs-push-12{left:100%}.w-col-xs-push-11{left:91.66666667%}.w-col-xs-push-10{left:83.33333333%}.w-col-xs-push-9{left:75%}.w-col-xs-push-8{left:66.66666667%}.w-col-xs-push-7{left:58.33333333%}.w-col-xs-push-6{left:50%}.w-col-xs-push-5{left:41.66666667%}.w-col-xs-push-4{left:33.33333333%}.w-col-xs-push-3{left:25%}.w-col-xs-push-2{left:16.66666667%}.w-col-xs-push-1{left:8w-33333333%}.w-col-xs-push-0{left:auto}.w-col-xs-offset-12{margin-left:100%}.w-col-xs-offset-11{margin-left:91.66666667%}.w-col-xs-offset-10{margin-left:83.33333333%}.w-col-xs-offset-9{margin-left:75%}.w-col-xs-offset-8{margin-left:66.66666667%}.w-col-xs-offset-7{margin-left:58.33333333%}.w-col-xs-offset-6{margin-left:50%}.w-col-xs-offset-5{margin-left:41.66666667%}.w-col-xs-offset-4{margin-left:33.33333333%}.w-col-xs-offset-3{margin-left:25%}.w-col-xs-offset-2{margin-left:16.66666667%}.w-col-xs-offset-1{margin-left:8w-33333333%}.w-col-xs-offset-0{margin-left:0}@media (min-width:768px){.w-col-sm-1,.w-col-sm-10,.w-col-sm-11,.w-col-sm-12,.w-col-sm-2,.w-col-sm-3,.w-col-sm-4,.w-col-sm-5,.w-col-sm-6,.w-col-sm-7,.w-col-sm-8,.w-col-sm-9{float:left}.w-col-sm-12{width:100%}.w-col-sm-11{width:91.66666667%}.w-col-sm-10{width:83.33333333%}.w-col-sm-9{width:75%}.w-col-sm-8{width:66.66666667%}.w-col-sm-7{width:58.33333333%}.w-col-sm-6{width:50%}.w-col-sm-5{width:41.66666667%}.w-col-sm-4{width:33.33333333%}.w-col-sm-3{width:25%}.w-col-sm-2{width:16.66666667%}.w-col-sm-1{width:8w-33333333%}.w-col-sm-pull-12{right:100%}.w-col-sm-pull-11{right:91.66666667%}.w-col-sm-pull-10{right:83.33333333%}.w-col-sm-pull-9{right:75%}.w-col-sm-pull-8{right:66.66666667%}.w-col-sm-pull-7{right:58.33333333%}.w-col-sm-pull-6{right:50%}.w-col-sm-pull-5{right:41.66666667%}.w-col-sm-pull-4{right:33.33333333%}.w-col-sm-pull-3{right:25%}.w-col-sm-pull-2{right:16.66666667%}.w-col-sm-pull-1{right:8w-33333333%}.w-col-sm-pull-0{right:auto}.w-col-sm-push-12{left:100%}.w-col-sm-push-11{left:91.66666667%}.w-col-sm-push-10{left:83.33333333%}.w-col-sm-push-9{left:75%}.w-col-sm-push-8{left:66.66666667%}.w-col-sm-push-7{left:58.33333333%}.w-col-sm-push-6{left:50%}.w-col-sm-push-5{left:41.66666667%}.w-col-sm-push-4{left:33.33333333%}.w-col-sm-push-3{left:25%}.w-col-sm-push-2{left:16.66666667%}.w-col-sm-push-1{left:8w-33333333%}.w-col-sm-push-0{left:auto}.w-col-sm-offset-12{margin-left:100%}.w-col-sm-offset-11{margin-left:91.66666667%}.w-col-sm-offset-10{margin-left:83.33333333%}.w-col-sm-offset-9{margin-left:75%}.w-col-sm-offset-8{margin-left:66.66666667%}.w-col-sm-offset-7{margin-left:58.33333333%}.w-col-sm-offset-6{margin-left:50%}.w-col-sm-offset-5{margin-left:41.66666667%}.w-col-sm-offset-4{margin-left:33.33333333%}.w-col-sm-offset-3{margin-left:25%}.w-col-sm-offset-2{margin-left:16.66666667%}.w-col-sm-offset-1{margin-left:8w-33333333%}.w-col-sm-offset-0{margin-left:0}}@media (min-width:992px){.w-col-md-1,.w-col-md-10,.w-col-md-11,.w-col-md-12,.w-col-md-2,.w-col-md-3,.w-col-md-4,.w-col-md-5,.w-col-md-6,.w-col-md-7,.w-col-md-8,.w-col-md-9{float:left}.w-col-md-12{width:100%}.w-col-md-11{width:91.66666667%}.w-col-md-10{width:83.33333333%}.w-col-md-9{width:75%}.w-col-md-8{width:66.66666667%}.w-col-md-7{width:58.33333333%}.w-col-md-6{width:50%}.w-col-md-5{width:41.66666667%}.w-col-md-4{width:33.33333333%}.w-col-md-3{width:25%}.w-col-md-2{width:16.66666667%}.w-col-md-1{width:8w-33333333%}.w-col-md-pull-12{right:100%}.w-col-md-pull-11{right:91.66666667%}.w-col-md-pull-10{right:83.33333333%}.w-col-md-pull-9{right:75%}.w-col-md-pull-8{right:66.66666667%}.w-col-md-pull-7{right:58.33333333%}.w-col-md-pull-6{right:50%}.w-col-md-pull-5{right:41.66666667%}.w-col-md-pull-4{right:33.33333333%}.w-col-md-pull-3{right:25%}.w-col-md-pull-2{right:16.66666667%}.w-col-md-pull-1{right:8w-33333333%}.w-col-md-pull-0{right:auto}.w-col-md-push-12{left:100%}.w-col-md-push-11{left:91.66666667%}.w-col-md-push-10{left:83.33333333%}.w-col-md-push-9{left:75%}.w-col-md-push-8{left:66.66666667%}.w-col-md-push-7{left:58.33333333%}.w-col-md-push-6{left:50%}.w-col-md-push-5{left:41.66666667%}.w-col-md-push-4{left:33.33333333%}.w-col-md-push-3{left:25%}.w-col-md-push-2{left:16.66666667%}.w-col-md-push-1{left:8w-33333333%}.w-col-md-push-0{left:auto}.w-col-md-offset-12{margin-left:100%}.w-col-md-offset-11{margin-left:91.66666667%}.w-col-md-offset-10{margin-left:83.33333333%}.w-col-md-offset-9{margin-left:75%}.w-col-md-offset-8{margin-left:66.66666667%}.w-col-md-offset-7{margin-left:58.33333333%}.w-col-md-offset-6{margin-left:50%}.w-col-md-offset-5{margin-left:41.66666667%}.w-col-md-offset-4{margin-left:33.33333333%}.w-col-md-offset-3{margin-left:25%}.w-col-md-offset-2{margin-left:16.66666667%}.w-col-md-offset-1{margin-left:8w-33333333%}.w-col-md-offset-0{margin-left:0}}@media (min-width:1200px){.w-col-lg-1,.w-col-lg-10,.w-col-lg-11,.w-col-lg-12,.w-col-lg-2,.w-col-lg-3,.w-col-lg-4,.w-col-lg-5,.w-col-lg-6,.w-col-lg-7,.w-col-lg-8,.w-col-lg-9{float:left}.w-col-lg-12{width:100%}.w-col-lg-11{width:91.66666667%}.w-col-lg-10{width:83.33333333%}.w-col-lg-9{width:75%}.w-col-lg-8{width:66.66666667%}.w-col-lg-7{width:58.33333333%}.w-col-lg-6{width:50%}.w-col-lg-5{width:41.66666667%}.w-col-lg-4{width:33.33333333%}.w-col-lg-3{width:25%}.w-col-lg-2{width:16.66666667%}.w-col-lg-1{width:8w-33333333%}.w-col-lg-pull-12{right:100%}.w-col-lg-pull-11{right:91.66666667%}.w-col-lg-pull-10{right:83.33333333%}.w-col-lg-pull-9{right:75%}.w-col-lg-pull-8{right:66.66666667%}.w-col-lg-pull-7{right:58.33333333%}.w-col-lg-pull-6{right:50%}.w-col-lg-pull-5{right:41.66666667%}.w-col-lg-pull-4{right:33.33333333%}.w-col-lg-pull-3{right:25%}.w-col-lg-pull-2{right:16.66666667%}.w-col-lg-pull-1{right:8w-33333333%}.w-col-lg-pull-0{right:auto}.w-col-lg-push-12{left:100%}.w-col-lg-push-11{left:91.66666667%}.w-col-lg-push-10{left:83.33333333%}.w-col-lg-push-9{left:75%}.w-col-lg-push-8{left:66.66666667%}.w-col-lg-push-7{left:58.33333333%}.w-col-lg-push-6{left:50%}.w-col-lg-push-5{left:41.66666667%}.w-col-lg-push-4{left:33.33333333%}.w-col-lg-push-3{left:25%}.w-col-lg-push-2{left:16.66666667%}.w-col-lg-push-1{left:8w-33333333%}.w-col-lg-push-0{left:auto}.w-col-lg-offset-12{margin-left:100%}.w-col-lg-offset-11{margin-left:91.66666667%}.w-col-lg-offset-10{margin-left:83.33333333%}.w-col-lg-offset-9{margin-left:75%}.w-col-lg-offset-8{margin-left:66.66666667%}.w-col-lg-offset-7{margin-left:58.33333333%}.w-col-lg-offset-6{margin-left:50%}.w-col-lg-offset-5{margin-left:41.66666667%}.w-col-lg-offset-4{margin-left:33.33333333%}.w-col-lg-offset-3{margin-left:25%}.w-col-lg-offset-2{margin-left:16.66666667%}.w-col-lg-offset-1{margin-left:8w-33333333%}.w-col-lg-offset-0{margin-left:0}}.w-clearfix:after,.w-clearfix:before,.w-container-fluid:after,.w-container-fluid:before,.w-container:after,.w-container:before,.w-row:after,.w-row:before{content:" ";display:table}.w-clearfix:after,.w-container-fluid:after,.w-container:after,.w-row:after{clear:both}.w-center-block{display:block;margin-left:auto;margin-right:auto}.w-pull-right{float:right!important}.w-pull-left{float:left!important}.w-hide{display:none!important}.w-show{display:block!important}.w-invisible{visibility:hidden}.w-text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.w-hidden{display:none!important}.w-affix{position:fixed}.mec-image-popup-wrap{display:none}#wns-be-infobar.sticky{position:fixed;top:32px;background:#fff;z-index:9999;width:82%}.wns-be-main .wns-saved-settings.sticky{position:fixed;width:62.5%;top:111px;z-index:999999999999999999}#mec-search-settings{border-radius:2px;min-height:32px;box-shadow:0 3px 14px -5px rgba(0,0,0,.2),inset 0 1px 2px rgba(0,0,0,.07);padding:9px 10px 11px;margin-right:6px;color:#7c7772;font-size:12px;width:200px}#mec-search-settings::-webkit-input-placeholder{color:#7c7772}#mec-search-settings::-moz-placeholder{color:#7c7772}#mec-search-settings:-ms-input-placeholder{color:#7c7772}#mec-search-settings:-moz-placeholder{color:#7c7772}.mec-export-settings,.mec-import-settings{font-weight:700;border-radius:2px;box-shadow:0 3px 10px -4px #008aff;text-shadow:none;background:#008aff;background:linear-gradient(95deg,#36a2ff 0,#008aff 50%,#0072ff 100%);border:none;transition:.24s;padding:8px 32px;height:36px;letter-spacing:.2px;line-height:36px;font-size:13px;color:#fff;text-decoration:none;display:inline-block}.mec-export-settings:hover,.mec-import-settings:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 23px -7px rgba(0,0,0,.5);color:#fff}textarea.mec-import-settings-content{display:block;width:100%;min-height:120px;margin-bottom:25px;padding:10px 15px}.mec-import-options-notification{display:inline-block}.mec-import-options-notification .mec-message-import-error,.mec-import-options-notification .mec-message-import-success{display:inline-block;padding:15px 12px;margin-left:12px;opacity:0;visibility:hidden;font-weight:700}.mec-import-options-notification .mec-message-import-success{opacity:1;visibility:visible;border:2px solid green}.mec-import-options-notification .mec-message-import-error{opacity:1;visibility:visible;border:2px solid #e62117}.mec-export-settings:focus,.mec-import-settings:focus{color:#fff}.mec-import-settings-wrap{position:relative}.mec-loarder-wrap{position:absolute;top:0;bottom:0;left:0;right:0;background:rgba(202,202,202,.7);z-index:9999}.mec-loarder-wrap.mec-settings-loader{top:34px}.mec-loarder{position:absolute;width:64px;height:64px;top:calc(50% - 32px);left:calc(50% - 36px)}.mec-loarder div{display:inline-block;position:absolute;left:6px;width:4px;background:#fff;animation:mec-loarder 1.2s cubic-bezier(0,.5,.5,1) infinite}.mec-loarder div:nth-child(1){left:27px;animation-delay:-.24s;background:#0075ff}.mec-loarder div:nth-child(2){left:36px;animation-delay:-.12s;background:#028bff}.mec-loarder div:nth-child(3){left:45px;animation-delay:0;background:#32a0ff}@keyframes mec-loarder{0%{top:6px;height:51px}100%,50%{top:19px;height:26px}}.w-box.support-page.searchbox{background:#008aff;background:linear-gradient(180deg,#36a2ff 0,#008aff 50%,#0072ff 100%);color:#fff;min-height:260px;text-align:center;border-radius:2px}#webnus-dashboard .search-form input{background:rgba(255,255,255,.2);border:none;width:50%;outline:0;color:rgba(255,255,255,.7);font-size:18px;border-radius:4px 0 0 4px;box-shadow:0 1px 2px 0 rgba(0,0,0,.03);-webkit-transition:background .4s,box-shadow .2s;transition:background .4s,box-shadow .2s;padding:20px 32px;margin:0}#webnus-dashboard .search-form button{background:rgba(255,255,255,.2);border:none;padding:20px 32px;margin-left:-2px;color:#fff;border-radius:0 4px 4px 0;font-size:18px;cursor:pointer;-webkit-transition:background .4s,box-shadow .2s;transition:background .4s,box-shadow .2s}#webnus-dashboard .search-form button:hover{background:#fff;color:#3a3c4c}.w-box.support-page.searchbox p{font-size:30px}.search-form input::-webkit-input-placeholder{color:rgba(255,255,255,.7)}.search-form input::-moz-placeholder{color:rgba(255,255,255,.7)}.search-form input:-ms-input-placeholder{color:rgba(255,255,255,.7)}.search-form input:-moz-placeholder{color:rgba(255,255,255,.7)}#webnus-dashboard .search-form input:active,#webnus-dashboard .search-form input:focus{box-shadow:0 10px 20px rgba(0,0,0,.14);background:#fff;color:#3a3c4c}#webnus-dashboard .search-form input:active::-webkit-input-placeholder,#webnus-dashboard .search-form input:focus::-webkit-input-placeholder{color:#3a3c4c}#webnus-dashboard .search-form input:active::-moz-placeholder,#webnus-dashboard .search-form input:focus::-moz-placeholder{color:#3a3c4c}#webnus-dashboard .search-form input:active:-ms-input-placeholder,#webnus-dashboard .search-form input:focus:-ms-input-placeholder{color:#3a3c4c}#webnus-dashboard .search-form input:active:-moz-placeholder,#webnus-dashboard .search-form input:focus:-moz-placeholder{color:#3a3c4c}#webnus-dashboard .w-box.support-page.mec-ticksy{text-align:center;min-height:260px}#webnus-dashboard .w-box.support-page.mec-ticksy p{font-size:20px;width:70%;margin:0 auto;margin-bottom:40px;margin-top:40px}#webnus-dashboard .w-box.support-page.mec-ticksy a{color:#fff;font-weight:500;border-radius:2px;box-shadow:0 3px 10px -4px #008aff;text-shadow:none;background:#008aff;background:linear-gradient(95deg,#36a2ff 0,#008aff 50%,#0072ff 100%);border:none;transition:.24s;padding:12px 20px;cursor:pointer;margin-bottom:40px;display:inline-block}#webnus-dashboard .w-box.support-page.mec-ticksy a:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 23px -7px rgba(0,0,0,.5)}.mec-faq-accordion>.mec-faq-accordion-content{display:none}#webnus-dashboard .mec-faq-accordion-trigger a{font-size:16px;padding:12px;background:#f1f1f1;display:block;color:#222;line-height:17px;outline:0}.mec-faq-accordion-trigger{margin-bottom:5px;position:relative}#webnus-dashboard .mec-faq-accordion-trigger a:after{font-family:simple-line-icons;content:"\e095";position:absolute;right:12px;font-weight:700}.mec-faq-accordion-content{padding:5px 14px 25px}#webnus-dashboard .mec-faq-accordion-trigger a.active:after{content:"\e082"}#webnus-dashboard .support-page-links a{background-color:#fff;color:#fff;border-radius:2px;padding:13px 24px;font-size:12px;letter-spacing:1px;font-weight:600;text-transform:uppercase}#webnus-dashboard .support-page-links a:hover,#webnus-dashboard .w-box.support-page.videobox .w-button a:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 21px -5px rgba(0,0,0,.5)}#webnus-dashboard .support-page-links{display:inline-block;margin:12px 4px 16px 0}.support-page-links.link-to-doc a{background:#4cbf67;background:linear-gradient(95deg,#6fe08a 0,#58cf74 50%,#36cb58 100%);box-shadow:0 5px 10px -5px #4cbf67}.support-page-links.link-to-videos a{background:#ff876c;background:linear-gradient(95deg,#ff876c 0,#ff7455 50%,#ff5a35 100%);box-shadow:0 5px 10px -5px #ff876c}.support-page-links.link-to-articles a{background:#b092e6;background:linear-gradient(95deg,#b092e6 0,#9b70e8 50%,#8e5cea 100%);box-shadow:0 5px 10px -5px #b092e6}.w-box.support-page.articles-box .w-box-content a{display:block;padding:6px 0}#webnus-dashboard .w-box.support-page.videobox .w-button a{color:#fff;font-size:10px;padding:5px 15px;min-height:10px;font-weight:500;border-radius:22px;box-shadow:0 3px 10px -4px #ff5a35;text-shadow:none;background:#ff5a35;background:linear-gradient(95deg,#ff876c 0,#ff7455 50%,#ff5a35 100%);border:none;transition:.24s}.w-box.support-page.articles-box,.w-box.support-page.faq-box{min-height:500px}.w-box.support-page.videobox{border-radius:2px;min-height:282px;box-shadow:0 1px 6px rgba(0,0,0,.039)!important}#webnus-dashboard .w-box.support-page.videobox .w-button a i{margin-right:6px}.support-page .w-box-content ul{margin-top:5px;padding-left:5px}.support-page .w-box-content ul li{font-size:13px}.support-page .w-box-content ul li i{font-size:17px;vertical-align:text-bottom;margin-right:7px;color:#999}.w-box.mec-activation{background:#fff url(../img/dp-dsb-support.jpg) no-repeat top right}.w-box.mec-activation .w-box-head{color:#40d8f0;width:75%}.w-box.mec-activation .w-box-content{padding:10px 30px}.w-box.mec-activation input[type=radio]{display:none}.w-box.mec-activation input[type=radio]+label{color:#000;font-size:13px;line-height:14px!important;color:#7b7b7b}.w-box.mec-activation input[type=radio].checked+label{color:#40d8f0}.w-box.mec-activation input[type=radio]+label span{display:inline-block;margin:-2px 6px 0 0;vertical-align:middle;cursor:pointer;height:14px;width:14px;text-align:center;background-color:#fff;border:1px solid #d4d4d4;border-radius:100%;box-shadow:0 2px 16px -2px rgba(0,0,0,.2);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative}.w-box.mec-activation input[type=radio].checked+label span{background-color:#40d8f0;border-color:#40d8f0;box-shadow:0 2px 14px -3px #40d8f0}.w-box.mec-activation input[type=radio].checked+label span:after{content:'';display:block;position:absolute;top:4px;left:4px;width:4px;height:4px;background:#fff;border-radius:100%}.w-box.mec-activation .LicenseType label{padding-right:20px;font-weight:500}.w-box.mec-activation .LicenseField{display:inline-block;position:relative;margin-top:20px}.w-box.mec-activation input[name=MECPurchaseCode]{box-shadow:inset 0 1px 2px rgba(0,0,0,.07);min-width:220px;background:#f4f4f4;border:none;border-radius:33px;width:500px;min-height:50px;margin:0;padding-left:20px;text-align:left}#webnus-dashboard .w-box.mec-activation input[type=submit]{height:40px;line-height:40px;font-weight:600;border:none;cursor:pointer;padding:0 30px;border-radius:33px;color:#fff;letter-spacing:1px;text-transform:uppercase;font-size:12px;background:#4cbf67;background:linear-gradient(95deg,#6fe08a 0,#58cf74 50%,#36cb58 100%);box-shadow:0 5px 10px -5px #4cbf67;transition:all .28s ease;position:absolute;right:5px;top:4px;font-size:12px}#webnus-dashboard .w-box.mec-activation input[type=submit]:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 23px -7px rgba(0,0,0,.5)}#MECActivation .MECPurchaseStatus,.addon-activation-form .MECPurchaseStatus{display:inline-block;width:40px;height:40px;text-align:center;padding-top:9px;color:#fff;font-weight:700;font-size:18px;border-radius:50%;padding-top:8px;position:absolute;right:-51px;top:calc(50% - 20px)}.MECPurchaseStatus:after,.MECPurchaseStatus:before{position:absolute;border-radius:50px;background:#fff;content:'';transform:rotate(45deg)}.MECPurchaseStatus.PurchaseError:before{width:22px;height:4px;right:9px;top:18px;transform:rotate(45deg)}.MECPurchaseStatus.PurchaseError:after{width:22px;height:4px;right:9px;top:18px;transform:rotate(-45deg)}.MECPurchaseStatus.PurchaseSuccess:before{width:13px;height:4px;right:19px;top:21px;transform:rotate(45deg)}.MECPurchaseStatus.PurchaseSuccess:after{width:22px;height:4px;right:5px;top:18px;transform:rotate(-45deg)}#MECActivation .MECPurchaseStatus.PurchaseError,.addon-activation-form .MECPurchaseStatus.PurchaseError{background:#ff876c;background:linear-gradient(95deg,#ff876c 0,#ff7455 50%,#ff5a35 100%);box-shadow:0 5px 10px -5px #ff876c}#MECActivation .MECPurchaseStatus.PurchaseSuccess,.addon-activation-form .MECPurchaseStatus.PurchaseSuccess{background:#4cbf67;background:linear-gradient(95deg,#6fe08a 0,#58cf74 50%,#36cb58 100%);box-shadow:0 5px 10px -5px #4cbf67}.wna-spinner-wrap{position:absolute;background:#000;width:509px;height:64px;top:-8px;border-radius:50px;z-index:999;background-color:#fff;opacity:.9}.wna-spinner{width:40px;height:40px;position:relative;margin:6px auto}.wna-spinner .double-bounce1,.wna-spinner .double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#40d8f0;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:sk-bounce 2s infinite ease-in-out;animation:sk-bounce 2s infinite ease-in-out}.wna-spinner .double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}#MECActivation .MECLicenseMessage,.addon-activation-form .MECLicenseMessage{margin-top:24px;color:#f64;max-width:570px}.box-addon-activation-toggle-content,.box-addon-activation-toggle-head{display:none}.addon-activation-form h3{font-size:15px;font-weight:400;margin:34px 0 -7px}.box-addon-activation-toggle-head{line-height:1.5;font-size:16px;margin-top:20px;cursor:pointer}.box-addon-activation-toggle-head i{margin-right:7px;cursor:pointer;font-weight:700}#mec-advanced-wraper div:first-child>ul{display:block;margin:5px 0;padding:5px 0;width:390px;border:1px solid #e1e2e3;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.05)}#mec-advanced-wraper div:first-child>ul span{display:none}#mec-advanced-wraper div:first-child>ul *{display:inline-block;background:#fff;font-size:12px;color:#717273;text-align:center}#mec-advanced-wraper div:first-child>ul>li{width:60px;font-weight:700;margin:0 10px 0 0;padding:4px 0;border-right:1px solid #e1e2e3}#mec-advanced-wraper div:first-child>ul>ul>li{margin:0;padding:2px 10px;cursor:pointer;border-radius:2px;transition:all .18s ease}#mec-advanced-wraper div:first-child>ul>ul>li:hover,.mec-active{background:#008aff!important;color:#fff!important}@-webkit-keyframes sk-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes sk-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.w-col-sm-3 .w-box.addon{min-height:auto;box-shadow:0 3px 16px -5px rgba(0,0,0,.1);border-radius:2px}.w-box-child.mec-addon-box{padding:20px 20px}.mec-addon-box-head{border-bottom:1px solid #e8e8e8;padding-bottom:5px;margin-bottom:14px;position:relative}.mec-addon-box-version{position:relative;background:#eaeaea;border-radius:1px;padding:0 8px;color:#5a5a5a;font-size:11px;letter-spacing:.2px;line-height:21px;display:inline-block;margin:3px 0}.mec-addon-box-title{font-weight:700;font-size:18px;line-height:25px}.mec-addon-box-title a span{color:#444;font-size:15px}.mec-addon-box-content p{color:#777;font-size:13px}.mec-addon-box-mec-version{background:#f3f3f3;padding:10px;font-size:13px}#webnus-dashboard .addons-page-links{display:inline-block;margin:12px 4px 16px 0}#webnus-dashboard .addons-page-links a{background-color:#fff;color:#fff;border-radius:2px;padding:13px 24px;font-size:12px;letter-spacing:1px;font-weight:600;text-transform:uppercase}.addons-page-links.link-to-purchase a{background:#4cbf67;background:linear-gradient(95deg,#6fe08a 0,#58cf74 50%,#36cb58 100%);box-shadow:0 5px 10px -5px #4cbf67}.addons-page-links.link-to-install-addons a{background:#b092e6;background:linear-gradient(95deg,#b092e6 0,#9b70e8 50%,#8e5cea 100%);box-shadow:0 5px 10px -5px #b092e6}#webnus-dashboard .addons-page-links a:hover,#webnus-dashboard .w-box.addons-page.videobox .w-button a:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 21px -5px rgba(0,0,0,.5)}.mec-addon-box-footer{margin-top:25px}#webnus-dashboard .mec-addon-box-footer a{font-weight:500;border-radius:2px;box-shadow:0 3px 10px -4px #008aff;text-shadow:none;background:#008aff;background:linear-gradient(95deg,#36a2ff 0,#008aff 50%,#0072ff 100%);border:none;transition:.24s;padding:7px 19px;margin-top:10px;display:inline-block;letter-spacing:.2px;color:#fff;width:100%;text-align:center}#webnus-dashboard .mec-addon-box-footer a.mec-addon-box-intro{box-shadow:0 3px 10px -4px #ff5a35;background:linear-gradient(95deg,#ff876c 0,#ff7455 50%,#ff5a35 100%)}#webnus-dashboard .mec-addon-box-footer a:hover{background:#222!important;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%)!important;box-shadow:0 5px 23px -7px rgba(0,0,0,.5)!important;cursor:pointer!important}#webnus-dashboard .mec-addon-box-footer a i{margin-right:6px;color:#fff}@media(max-width:1366px){.wns-be-container #wns-be-content{padding:5px 15px 0}.mec-form-row .mec-col-8 label{font-size:10px}#webnus-dashboard .mec-tooltip .box p,.mec-tooltip .box p{font-size:10px}}@media (max-width:780px){.wns-be-container #wns-be-content{padding:10px 0}.wns-be-container .mec-form-row .mec-col-8 label{width:50%;display:block}.wns-be-container .mec-form-row input[type=checkbox]{width:14px;height:14px}.wns-be-container .wns-be-sidebar li .subsection a{padding-left:30px}.wns-be-container .wns-be-sidebar{width:200px}.wns-be-container .wns-be-main{margin-left:200px}.wns-be-container .mec-tooltip .box{min-width:235px!important}.wns-be-container .mec-tooltip .box p{font-size:12px!important}#wns-be-infobar.sticky{position:unset}}@media (max-width:480px){.wns-be-container .wns-be-sidebar{width:100%;position:unset;float:none}.wns-be-container .wns-be-main{margin-left:0;width:100%;position:unset}.wns-be-container{margin-top:50px}.wns-be-container #wns-be-infobar:before{width:100%}.wns-be-container #wns-be-infobar{height:150px}#mec-search-settings{margin-top:80px;width:181px}}.addons-page-error,.addons-page-notice{display:block;margin-top:15px;margin-bottom:0;background:#fff;border-left:4px solid #00a0d2;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:1px 12px}.addons-page-error p,.addons-page-notice p{margin:.5em 0;padding:2px;font-size:13px}.addons-page-error{border-left-color:#dc3232}.mec-addon-box-comingsoon{background:#eaeaea;padding:8px 11px;color:#5a5a5a;font-size:14px;font-weight:500;text-align:center}.mec-addons .w-row .w-col-sm-3:nth-child(4n+1){clear:left}@media (min-width:960px){#webnus-dashboard .mec-addon-box-footer .w-button{text-align:right}}@media (min-width:1401px){.mec-addon-box-title a span{font-size:17px}}.mec-pro-notice{margin-top:24px;line-height:30px}.mec-pro-notice .info-msg{padding:50px 30px;margin-bottom:0}#webnus-dashboard .mec-pro-notice .info-msg{background:#fff;box-shadow:0 1px 16px rgba(0,0,0,.034);text-align:center;color:#000}#webnus-dashboard a.info-msg-link{background:#e66f52;background:linear-gradient(95deg,#ff8162 0,#e66f52 50%,#ff4c20 100%);box-shadow:0 5px 10px -5px #e66f52;border-radius:2px;padding:12px 50px;font-size:16px;line-height:24px;border:none;margin:20px auto 0;color:#fff;transition:all .3s ease;display:inline-block}#webnus-dashboard a.info-msg-link:hover{background:#222;background:linear-gradient(95deg,#555 0,#222 50%,#000 100%);box-shadow:0 5px 21px -5px rgba(0,0,0,.5)}#webnus-dashboard .info-msg p{width:70%;margin:0 auto;line-height:1.8}#webnus-dashboard .info-msg-coupon{font-size:13px;color:#777;max-width:600px;line-height:1.68;margin:25px auto 0}#webnus-dashboard .info-msg-coupon strong{font-weight:700;color:#19ce18}.info-msg .socialfollow{padding-top:20px}.info-msg .socialfollow a{margin:0 2px;display:inline-block}.info-msg .socialfollow a i{background:#96a4b1;color:#fff;padding:6px;border-radius:3px;font-size:18px;box-shadow:0 2px 3px rgba(0,0,0,.1);transition:all .25s}.info-msg .socialfollow a:hover i{background:#008aff}.mec-intro-section .w-box-content{text-align:center}.mec-intro-section .w-box-content.mec-intro-section-welcome{max-width:600px;margin:0 auto}.mec-intro-section .w-box-content.mec-intro-section-welcome h3{font-size:27px}a.mec-intro-section-link-tag.button.button-hero{margin:0 10px 40px}a.mec-intro-section-link-tag.button.button-primary.button-hero{color:#fff!important}a.mec-intro-section-link-tag.button.button-secondary.button-hero{color:#000!important}.mec-intro-section-ifarme iframe{border:1px solid #e7e7e7;border-radius:3px;padding:10px;box-shadow:0 3px 10px -6px rgba(0,0,0,.2)}.w-box-content.mec-intro-section-welcome p{margin-bottom:0}.mec-tooltip a:focus{box-shadow:none}#mec_booking_form .mec-options-fields,#mec_modules_form .mec-options-fields,#mec_settings_form .mec-options-fields,#mec_single_form .mec-options-fields{padding-bottom:150px!important}#mec_taxes_fees_container_toggle{margin-bottom:60px}#mec_taxes_fees_container_toggle{margin-bottom:60px}.wns-be-sidebar li{position:relative}.wns-be-sidebar li .submneu-hover{position:absolute;top:-1px;right:-222px;width:220px;z-index:9;background:#fff;border:1px;border-style:solid;border-color:#dedede;margin:0;overflow:visible;opacity:0;visibility:hidden;transition:all .23s ease;padding-top:8px;padding-bottom:12px}.wns-be-sidebar li:hover{background:#fff}.wns-be-sidebar li:hover .submneu-hover{opacity:1;visibility:visible}.wns-be-sidebar li .submneu-hover a{background:#fff;color:#636363;opacity:1;font-size:12px;padding:6px 4px 6px 26px}.wns-be-sidebar li .submneu-hover a:hover{background:#f6f6f6;color:#222}.wns-be-sidebar li .submneu-hover:before{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:-15px;top:14px;border-right-color:#c5c5c5;right:0}.wns-be-sidebar li .submneu-hover:after{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:-14px;top:14px}.wns-be-sidebar li a:focus,.wns-be-sidebar li:focus{outline:-webkit-focus-ring-color auto 0;border:0;box-shadow:none}@media (max-width:480px){.wns-be-sidebar li .submneu-hover{width:175px;right:0}.wns-be-sidebar li .submneu-hover a{font-size:11px;padding:5px 5px 5px 20px}}.mec-tooltip:hover:after,.mec-tooltip:hover:before{display:none}.mec-tooltip{display:inline-flex;bottom:7px}.mec-tooltip .box{min-width:300px;max-width:600px;display:inline-block;left:26px;top:50%;transform:translateY(-50%);padding:0;margin-top:8px;background-color:#535a61;color:#fff;font-weight:300;font-size:14px;letter-spacing:.5px;line-height:1.3;position:absolute;z-index:9999999;box-sizing:border-box;border-radius:6px;box-shadow:0 4px 45px -8px #444b50;visibility:hidden;opacity:0;transition:opacity .23s}#webnus-dashboard .mec-tooltip .box p,.mec-tooltip .box p{color:#fff;font-size:14px;line-height:1.3;margin:0}.mec-tooltip:hover .box{visibility:visible;opacity:1}.mec-tooltip:hover .box{padding:20px;border-radius:8px}.mec-tooltip .box h5{color:#fff;font-size:17px;font-weight:600;margin:-30px -20px;padding:20px 0;text-align:center;margin-bottom:10px;background:#3a3f44;border-bottom:1px solid #32363a;border-radius:6px 6px 0 0;z-index:9999}#webnus-dashboard .mec-tooltip .box p a,.mec-tooltip .box p a{color:#40d9f1;margin-top:10px;margin-left:0;font-weight:400;position:relative;text-decoration:none;display:block;width:max-content}.mec-tooltip .box a:hover{color:#f90}.mec-tooltip .box:after{display:block;position:absolute!important;top:100%!important;right:50%!important;margin-top:-6px!important;margin-right:-6px!important;width:12px!important;height:24px!important;overflow:hidden!important;transform:rotate(-90deg)!important}.mec-tooltip .box:before{display:block;content:''!important;position:absolute!important;width:12px;height:12px;left:-10px!important;top:50%!important;transform:translate(50%,-50%) rotate(-45deg)!important;background-color:#535a61!important;box-shadow:0 8px 9px -4px #535a61!important;z-index:0!important}.mec-tooltip .box.top{left:50%;top:0;transform:translate(-50%,-100%);margin-top:0;margin-left:-10px}.mec-tooltip .box.top:after{top:50%!important;right:100%!important}.mec-tooltip .box.top:before{left:50%!important;top:100%!important}.mec-tooltip .box.bottom{left:50%;top:auto;bottom:0;transform:translate(-50%,100%);margin-bottom:-20px;margin-left:-10px}.mec-tooltip .box.bottom:after{top:0!important;right:50%!important;background-color:#3a3f44!important}.mec-tooltip .box.bottom:before{left:50%!important;top:-7px!important;transform:translateX(-50%);background-color:#3a3f44!important}.mec-tooltip .box.left{left:auto;right:26px;top:50%;transform:translateY(-50%)}.mec-tooltip .box.left:before{right:0!important;left:auto!important;top:50%!important}form#mec_reg_fields_form input[type=radio]:before{content:"";display:inline-block;background:#fff;border-radius:18px;width:14px;height:14px;margin:-1px 0 0 -2px;cursor:pointer;border:2px solid #e1e7ed;box-shadow:0 2px 15px -3px rgba(69,77,89,.32)}form#mec_reg_fields_form input[type=radio]:checked:before{border:7px solid #008aff;background:#fff;box-shadow:0 3px 16px -3px #008aff;width:4px;height:4px}form#mec_reg_fields_form input[type=radio]{min-height:0;margin-right:6px}form#mec_reg_fields_form label{margin-right:20px}@media(min-width:1200px) and (max-width:1366px){.mec-tooltip .box.left{left:50%;top:0;transform:translate(-50%,-100%);margin-top:0;margin-left:-10px}.mec-tooltip .box.left:after{top:50%!important;right:100%!important}.mec-tooltip .box.left:before{left:50%!important;top:100%!important}.mec-tooltip .box{min-width:225px}.mec-tooltip .box h5{font-size:15px}.mec-tooltip .box .content{font-size:12px}}@media(max-width:1366px){.wns-be-container .wns-be-group-tab p{margin-top:0}}.mec-addons-notification-box-wrap .w-col-sm-12{padding:0}.mec-addons-notification-box-wrap img{width:auto}.mec-addons-notification-box-image{width:555px;display:inline-block;vertical-align:top}.mec-addons-notification-box-content{width:calc(100% - 559px);display:inline-block}.mec-addons-notification-box-content p{margin-top:1%;line-height:1.5;font-size:16px}.mec-addons-notification-box-content .w-box-content{padding-top:0;padding-bottom:0}.mec-addons-notification-box-content ol{font-size:16px}.mec-addons-notification-box-content a{background:#38d5ed;color:#fff!important;padding:10px 26px;margin-top:5px;display:inline-block;border-radius:3px;text-transform:capitalize;font-size:16px;letter-spacing:.4px;transition:all .1s ease;font-weight:600;text-decoration:none}.mec-addons-notification-box-content a:hover{background:#000}.w-clearfix.w-box.mec-addons-notification-box-wrap span{right:0;left:unset;cursor:pointer;background:#fff;padding:0 16px}.w-clearfix.w-box.mec-addons-notification-box-wrap span i{font-size:28px;vertical-align:sub;color:#f2113e}.wns-be-container .mec-addons-notification-wrap{padding:0;margin:0}.wns-be-container .mec-addons-notification-wrap .w-col-sm-12{padding:0}.wns-be-container .w-box{margin-top:0}.wns-be-container.mec-addons-notification-set-box{margin-right:15px;margin-top:50px;margin-bottom:27px}@media(max-width:1200px){.mec-addons-notification-box-content,.mec-addons-notification-box-image{width:100%;display:block}.mec-addons-notification-box-image{text-align:center}}@media(max-width:768px){.mec-addons-notification-box-image img{width:100%;height:auto}}body.rtl .wns-be-sidebar{width:260px;float:right;position:relative}body.rtl .wns-be-main{margin-left:0;border-left:0;margin-right:260px;border-right:1px solid #dedede}body.rtl .w-box.mec-activation .LicenseField{direction:rtl}body.rtl .w-box.mec-activation input[name=MECPurchaseCode]{text-align:right;padding-right:20px}body.rtl #MECActivation .MECPurchaseStatus,body.rtl .addon-activation-form .MECPurchaseStatus{right:auto;left:-51px}body.rtl #webnus-dashboard .w-box.mec-activation input[type=submit]{right:auto;left:5px}body.rtl .wns-be-sidebar .wns-be-group-menu li a{padding:13px 20px 13px 4px}body.rtl .wns-be-sidebar .wns-be-group-tab-link-a span.wns-be-group-menu-title{padding-left:0;padding-right:24px}body.rtl .wns-be-sidebar .has-sub span.extra-icon{float:left}body.rtl .wns-be-sidebar .wns-be-group-tab-link-a span.extra-icon i{right:auto;left:10px}body.rtl .wns-be-sidebar .wns-be-group-menu li .subsection li.active a:after,body.rtl .wns-be-sidebar .wns-be-group-menu li .subsection li.active a:before{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:transparent;border-left-color:#fff;right:auto;left:-1px;top:10px}body.rtl .wns-be-sidebar .wns-be-group-menu li .subsection li.active a:before{border-right-color:transparent;border-left-color:#c5c5c5;right:auto;left:0}body.rtl .mec-col-1,body.rtl .mec-col-10,body.rtl .mec-col-11,body.rtl .mec-col-12,body.rtl .mec-col-2,body.rtl .mec-col-3,body.rtl .mec-col-4,body.rtl .mec-col-5,body.rtl .mec-col-6,body.rtl .mec-col-7,body.rtl .mec-col-8,body.rtl .mec-col-9{float:right;margin:0 1% 0 0}body.rtl .wns-be-sidebar li .submneu-hover{right:auto;left:-222px}body.rtl .wns-be-sidebar li .submneu-hover:after{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:auto;right:-1px;top:14px}body.rtl #mec_styles_form #mec_styles_CSS{direction:ltr}body.rtl .w-box.mec-activation{-moz-transform:scaleY(-1);-o-transform:scaleY(-1);-webkit-transform:scaleY(-1);transform:scaleX(-1)}body.rtl .w-box.mec-activation .w-box-content,body.rtl .w-box.mec-activation .w-box-head{-moz-transform:scaleY(-1);-o-transform:scaleY(-1);-webkit-transform:scaleY(-1);transform:scaleX(-1);display:block}body.rtl .w-box.mec-activation .w-box-head{width:100%}body.rtl .wns-be-container #wns-be-infobar:before{left:auto;right:0}body.rtl .wns-be-container .dpr-btn.dpr-save-btn{float:left}body.rtl .wns-be-container .wns-be-group-tab h2:before,body.rtl .wns-be-container .wns-be-group-tab h4:before{left:auto;right:0;margin-right:0;margin-left:5px}body.rtl #mec_gateways_form .mec-tooltip{float:left}div#plugin-information-content .section{margin-top:-600px}.mec-details-addons-container{margin-top:20px}.mec-details-addons-wrap img{float:left;width:19%;margin-right:17px}.mec-details-addons-wrap{clear:both;margin-bottom:80px;display:block;position:relative}.mec-details-addons-wrap a{text-decoration:none}.mec-details-addons-wrap p{float:left;width:340px;margin-top:0;margin-bottom:30px}.mec-details-addons-title{font-weight:700}.mec-details-addons-title a{color:#444}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx{border-radius:10px!important;box-shadow:0 4px 38px rgba(0,0,0,.14)!important}body .crisp-client .crisp-1rjpbb7 .crisp-13qutdl,body .crisp-client .crisp-1rjpbb7 .crisp-13qutdl *,body .crisp-client .crisp-1rjpbb7 .crisp-9dgo7z,body .crisp-client .crisp-1rjpbb7 .crisp-9dgo7z *{font-family:proxima-nova,-apple-system,BlinkMacSystemFont,"Segoe UI",Catamaran,sans-serif!important}body .crisp-client .crisp-1rjpbb7 .crisp-145mbcr,body .crisp-client .crisp-1rjpbb7 .crisp-1jrqqbm:hover{background-color:#fff!important}body .crisp-client .crisp-1rjpbb7 .crisp-14u434g{border-color:#e7e8e9!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-1bkorcf .crisp-1vzg1qq{font-size:20px!important;width:14px!important;height:19px!important;opacity:.85}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-1bkorcf .crisp-1vzg1qq:hover{opacity:.99}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-1sps3eb .crisp-1vd2grm .crisp-12w4w1a{font-size:13px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-1sps3eb .crisp-1vd2grm .crisp-12w4w1a::-webkit-input-placeholder{color:#717273!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv[data-from=visitor] .crisp-z89v5n .crisp-162m9xf{background-color:#008aff!important;color:#fff!important;box-shadow:none!important;border-radius:5px!important;padding:15px 25px 15px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv[data-from=visitor] .crisp-z89v5n .crisp-162m9xf .crisp-1o2g4mc{color:#fff!important;font-size:13px!important;letter-spacing:.3px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv .crisp-z89v5n .crisp-162m9xf{background-color:#f1f2f3!important;border-radius:5px!important;padding:15px 25px 15px!important;box-shadow:none!important;color:#121314!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv[data-type=audio] .crisp-z89v5n .crisp-162m9xf{background-color:#d1d7dc!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv[data-from=operator] .crisp-z89v5n .crisp-1o2g4mc{color:#121314!important;-webkit-text-fill-color:#121314!important;font-size:13px!important;letter-spacing:.3px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv .crisp-mkirz6 .crisp-12qaym5 .crisp-39hskb{opacity:.4;margin-right:5px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-zyxrmn .crisp-1bu0ive .crisp-z7oo2o .crisp-lgu84d .crisp-1ohjrf0 .crisp-dqw9ko .crisp-bhspdv .crisp-mkirz6 .crisp-12qaym5 .crisp-ehr6mw{opacity:.68;font-size:12px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg{background-image:linear-gradient(125deg,#008aff -10%,#0066b1 100%)!important;height:110px!important;padding-top:35px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-rhv8pz .crisp-1uw6f17,body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-rhv8pz .crisp-85evuk,body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx .crisp-1784wh6 .crisp-1xmtdlg .crisp-rhv8pz .crisp-nu40j6{font-size:17px!important;line-height:28px!important;padding-top:10px!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-kquevr .crisp-x94m06{background-color:#008aff!important;background-image:linear-gradient(125deg,#008aff -10%,#008af0 100%)!important;box-shadow:0 5px 34px -6px #008aff!important}body .crisp-client .crisp-1rjpbb7 .crisp-4oo1n4{background-color:transparent!important}body .crisp-client .crisp-1rjpbb7 .crisp-1rf4xdh .crisp-ewasyx[data-chat-status=ongoing] .crisp-1784wh6 .crisp-1xmtdlg .crisp-172kolj{margin-top:-10px!important}body .crisp-client .crisp-1rjpbb7[data-last-operator-face=false] .crisp-1rf4xdh .crisp-kquevr .crisp-x94m06 .crisp-16qgsyi .crisp-101bp3x[data-is-ongoing=false]{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1OCIgaGVpZ2h0PSI1NSIgdmlld0JveD0iMCAwIDU4IDU1Ij4NCiAgPGcgaWQ9ImNoYXQtc3ZncmVwby1jb21fMV8iIGRhdGEtbmFtZT0iY2hhdC1zdmdyZXBvLWNvbSAoMSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTEuNSkiPg0KICAgIDxwYXRoIGlkPSJQYXRoXzEiIGRhdGEtbmFtZT0iUGF0aCAxIiBkPSJNMjksMS41YzE2LjAxNiwwLDI5LDExLjY0MSwyOSwyNmEyNC4wMSwyNC4wMSwwLDAsMS00LjgsMTQuMzE4Yy40LDQuNzQ1LDEuNTQyLDExLjQyOCw0LjgsMTQuNjgyLDAsMC05Ljk0My0xLjQtMTYuNjc3LTUuNDYybC0uMDIyLjAwOWMtMi43NjQtMS44LTUuNTMyLTMuNjU2LTYuMS00LjEyNmExLDEsMCwwLDAtMS4zMy0uMjc3LDEuMDE3LDEuMDE3LDAsMCwwLS40ODkuODQ4Yy0uMDEuNjIyLjAwNS43ODQsNS41ODUsNC40MjFBMzEuOTE0LDMxLjkxNCwwLDAsMSwyOSw1My41Yy0xNi4wMTYsMC0yOS0xMS42NDEtMjktMjZTMTIuOTg0LDEuNSwyOSwxLjVaIiBmaWxsPSIjZmZmIi8+DQogICAgPGNpcmNsZSBpZD0iRWxsaXBzZV8xIiBkYXRhLW5hbWU9IkVsbGlwc2UgMSIgY3g9IjMiIGN5PSIzIiByPSIzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMiAyNC41KSIgZmlsbD0iIzAwOGFmZiIvPg0KICAgIDxjaXJjbGUgaWQ9IkVsbGlwc2VfMiIgZGF0YS1uYW1lPSJFbGxpcHNlIDIiIGN4PSIzIiBjeT0iMyIgcj0iMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjYgMjQuNSkiIGZpbGw9IiMwMDhhZmYiLz4NCiAgICA8Y2lyY2xlIGlkPSJFbGxpcHNlXzMiIGRhdGEtbmFtZT0iRWxsaXBzZSAzIiBjeD0iMyIgY3k9IjMiIHI9IjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwIDI0LjUpIiBmaWxsPSIjMDA4YWZmIi8+DQogIDwvZz4NCjwvc3ZnPg0K)!important;height:31px!important;top:16px!important;left:14px!important}body .csh-category-item a h6{text-align:left}.mec-form-row.mec-syn-schedule{background:#f7f7f7;padding:20px;border:1px solid #eee;box-shadow:0 1px 11px rgba(0,0,0,.034);margin-bottom:20px}.mec-form-row.mec-syn-schedule p{padding-left:26px}.mec-form-row.mec-syn-schedule h2{margin-top:0}.mec-form-row.mec-syn-schedule h4{margin:10px 0}li.wns-be-group-menu-li.mec-settings-menu .mec-settings-submenu{position:absolute;top:-1px;right:-222px;width:220px;z-index:9;background:#fff;border:1px;border-style:solid;border-color:#dedede;margin:0;overflow:visible;opacity:0;visibility:hidden;transition:all .23s ease;padding-top:8px;padding-bottom:12px}li.wns-be-group-menu-li.mec-settings-menu:hover>.mec-settings-submenu{visibility:visible;opacity:1}.mec-settings-menu .mec-settings-submenu:before{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:-15px;top:14px;border-right-color:#c5c5c5;right:0}.mec-settings-menu .mec-settings-submenu:after{position:absolute;z-index:999;content:" ";height:0;width:0;border:7px solid transparent;border-right-color:#fff;left:-14px;top:14px}.wns-be-sidebar .mec-settings-menu .mec-settings-submenu a{background:#fff;color:#636363;opacity:1;font-size:12px;padding:6px 4px 6px 26px}.wn-mec-select{width:32.33333333%!important;clear:unset!important}.wn-mec-select{-webkit-tap-highlight-color:transparent;background-color:#fff;border-radius:3px;border:1px solid #ddd;margin-bottom:8px;position:relative;text-align:left!important;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;box-shadow:0 3px 13px -5px rgba(0,0,0,.1),inset 0 1px 2px rgba(0,0,0,.07)}.wn-mec-select:hover{border-color:#dbdbdb}.wn-mec-select.open .list{overflow:unset;width:100%;margin:0}.wn-mec-select .list{background-color:#fff;border-radius:2px;box-shadow:0 2px 33px -2px rgba(0,0,0,.2),inset 0 1px 2px rgba(0,0,0,.07);box-sizing:border-box;margin-top:4px;opacity:0;overflow:hidden;padding:0;pointer-events:none;position:absolute;top:100%;left:0;-webkit-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.75) translateY(-21px);-ms-transform:scale(.75) translateY(-21px);transform:scale(.75) translateY(-21px);-webkit-transition:all .2s cubic-bezier(.5,0,0,1.25),opacity .15s ease-out;transition:all .2s cubic-bezier(.5,0,0,1.25),opacity .15s ease-out;z-index:9}.wn-mec-select{-webkit-tap-highlight-color:transparent;background-color:#fff;border-radius:5px;border:solid 1px #e8e8e8;box-sizing:border-box;clear:both;cursor:pointer;display:block;float:left;font-family:inherit;font-size:14px;font-weight:400;height:42px;line-height:40px;outline:0;padding-left:18px;padding-right:30px;position:relative;text-align:left!important;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;width:auto}.wn-mec-select:hover{border-color:#dbdbdb}.wn-mec-select:after{border-bottom:2px solid #999;border-right:2px solid #999;content:'';display:block;height:5px;margin-top:-4px;pointer-events:none;position:absolute;right:12px;top:50%;-webkit-transform-origin:66% 66%;-ms-transform-origin:66% 66%;transform-origin:66% 66%;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-transition:all .15s ease-in-out;transition:all .15s ease-in-out;width:5px}.wn-mec-select.open:after{-webkit-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg)}.wn-mec-select.open .list{opacity:1;pointer-events:auto;-webkit-transform:scale(1) translateY(0);-ms-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}.wn-mec-select.disabled{border-color:#ededed;color:#999;pointer-events:none}.wn-mec-select.disabled:after{border-color:#ccc}.wn-mec-select.wide{width:100%}.wn-mec-select.wide .list{left:0!important;right:0!important}.wn-mec-select.right{float:right}.wn-mec-select.right .list{left:auto;right:0}.wn-mec-select.small{font-size:12px;height:36px;line-height:34px}.wn-mec-select.small:after{height:4px;width:4px}.wn-mec-select .list{background-color:#fff;border-radius:5px;box-shadow:0 0 0 1px rgba(68,68,68,.11);box-sizing:border-box;margin-top:4px;opacity:0;overflow:hidden;padding:0;pointer-events:none;position:absolute;top:100%;left:0;-webkit-transform-origin:50% 0;-ms-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.75) translateY(-21px);-ms-transform:scale(.75) translateY(-21px);transform:scale(.75) translateY(-21px);-webkit-transition:all .2s cubic-bezier(.5,0,0,1.25),opacity .15s ease-out;transition:all .2s cubic-bezier(.5,0,0,1.25),opacity .15s ease-out;z-index:9}.wn-mec-select .list:hover .option:not(:hover){background-color:transparent!important}.wn-mec-select .option{cursor:pointer;font-weight:400;list-style:none;min-height:40px;outline:0;text-align:left;position:relative;font-size:12px!important;padding:1px 12px!important;margin:0!important;line-height:28px!important;min-height:28px!important;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wn-mec-select .option .wn-hover-img-sh img{position:absolute;padding:3px;top:0;left:140px;box-shadow:0 3px 42px -8px rgba(0,0,0,.3);visibility:hidden;opacity:0;border:1px solid #dbdbdb;z-index:999999;background:#fff}.wn-mec-select .option:hover .wn-hover-img-sh img{visibility:visible;opacity:1}.wn-mec-select .option.focus,.wn-mec-select .option.selected.focus,.wn-mec-select .option:hover{background-color:#f6f6f6}.wn-mec-select .option.selected{font-weight:700}.wn-mec-select .option.disabled{background-color:transparent;color:#999;cursor:default}.no-csspointerevents .wn-mec-select .list{display:none}.no-csspointerevents .wn-mec-select.open .list{display:block}.mec-custom-nice-select ul.list li.option{width:30%!important;float:left!important;min-height:135px!important;height:135px;margin:1.66%!important;box-sizing:border-box;text-align:center;padding:10px!important;border-radius:3px;border:1px solid #eee;box-shadow:0 1px 3px rgba(0,0,0,.025);background:#fff!important}.mec-custom-nice-select ul.list li.option:hover{box-shadow:0 2px 7px rgba(0,0,0,.06);borde-color:#e0e0e0}.mec-custom-nice-select .list:hover .option:not(:hover),.mec-custom-nice-select ul.list:hover li.option{background:#fff!important}.mec-custom-nice-select ul.list{min-width:600px!important;margin-left:-132px!important;padding:20px 10px!important;background:#fcfbfd;border:1px solid #e9e9e9;box-shadow:0 1px 4px rgba(0,0,0,.05)}.mec-custom-nice-select ul.list li.option.selected{border:1px solid #008aff;box-shadow:0 1px 8px -3px #008aff inset;color:#008aff;padding:12px 0 0 0!important}.mec-custom-nice-select .wn-img-sh img{margin:6px 0 15px;line-height:1;max-width:68px;max-height:56px;filter:grayscale(1);-webkit-filter:grayscale(1);transition:all .22s ease;-webkit-transition:all .22s ease;-moz-transition:all .22s ease;-ms-transition:all .22s ease;-o-transition:all .22s ease}.wn-mec-select .option.focus .wn-img-sh img,.wn-mec-select .option.selected.focus .wn-img-sh img,.wn-mec-select .option:hover .wn-img-sh img{background-color:#f6f6f6;filter:grayscale(0);-webkit-filter:grayscale(0)}@media(max-width:768px){.wn-mec-select{width:45%!important}.mec-custom-nice-select ul.list{margin-left:-24px!important;min-width:404px!important}.mec-custom-nice-select ul.list li.option{width:46.6%!important}.wn-hover-img-sh{display:none}}@media(max-width:480px){.wn-mec-select{width:100%!important}.mec-custom-nice-select ul.list{min-width:337px!important}}@media(max-width:320px){.mec-custom-nice-select ul.list li.option{width:100%!important}.mec-custom-nice-select ul.list{min-width:298px!important}}.mec-sed-methods li{line-height:28px;padding-left:38px;position:relative}.mec-sed-methods li:before{margin-right:0}.mec-sed-methods li:before{border-radius:18px}.mec-custom-nice-select ul.list li .wn-mec-text:after,.mec-sed-methods li:before{content:"";position:absolute;display:inline-block;background:#fff;border-radius:2px;width:12px;height:12px;margin:-1px 0 0 -1px;cursor:pointer;border:2px solid #e1e7ed;box-shadow:0 2px 15px -3px rgba(69,77,89,.32);border-radius:50%}.mec-custom-nice-select ul.list li .wn-mec-text{position:relative;padding-top:14px}.mec-custom-nice-select ul.list li .wn-mec-text:after{left:calc(50% - 7px);top:-6px}.mec-sed-methods li:before{left:9px;top:calc(50% - 7px)}.mec-custom-nice-select ul.list li.option.selected .wn-mec-text:after,.mec-sed-methods li.active:before{width:4px;height:4px;border:7px solid #008aff;background:#fff;box-shadow:0 3px 16px -3px #008aff}
assets/css/frontend.css CHANGED
@@ -502,7 +502,7 @@
502
  color: #fff;
503
  }
504
 
505
- .mec-event-sharing-wrap>li {
506
  border: 1px solid #d9d9d9;
507
  }
508
 
@@ -5357,7 +5357,10 @@ li.mec-no-event-found .mec-event-title {
5357
  }
5358
  }
5359
 
5360
-
 
 
 
5361
 
5362
  /* Mec Countdown
5363
  -------------------------------- */
@@ -11752,6 +11755,11 @@ ul.mec-weekly-view-dates-events article:before,
11752
  }
11753
  }
11754
 
 
 
 
 
 
11755
 
11756
  /* Bootstrap v3.0.3 * * Copyright 2013 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */
11757
  .mec-wrap * {
@@ -12482,5 +12490,208 @@ article.mec-search-bar-result { text-align: left; margin-bottom: 0; padding-bott
12482
  vertical-align: top;
12483
  padding: 0 30px;
12484
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12485
 
12486
  /* --------------------- */
502
  color: #fff;
503
  }
504
 
505
+ .mec-event-sharing-wrap>li:first-of-type {
506
  border: 1px solid #d9d9d9;
507
  }
508
 
5357
  }
5358
  }
5359
 
5360
+ .mec-skin-grid-container .mec-skin-map-container,
5361
+ .mec-skin-list-container .mec-skin-map-container {
5362
+ margin-bottom:20px;
5363
+ }
5364
 
5365
  /* Mec Countdown
5366
  -------------------------------- */
11755
  }
11756
  }
11757
 
11758
+ /* Recaptcha Style on booking page */
11759
+ .mec-google-recaptcha {
11760
+ margin: 0 0 20px 16px;
11761
+
11762
+ }
11763
 
11764
  /* Bootstrap v3.0.3 * * Copyright 2013 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */
11765
  .mec-wrap * {
12490
  vertical-align: top;
12491
  padding: 0 30px;
12492
  }
12493
+
12494
+ /* Login Module */
12495
+ .mec-login-form {
12496
+ width: 100%;
12497
+ background: #fff;
12498
+ padding: 20px;
12499
+ margin: 0 auto;
12500
+ text-align: center
12501
+ }
12502
+
12503
+ .mec-login-form .mec-login-input {
12504
+ display: block;
12505
+ width: 286px;
12506
+ margin: 0 auto;
12507
+ margin-bottom: 12px
12508
+ }
12509
+
12510
+ .mec-login-forgotpassword {
12511
+ display: inline-block
12512
+ }
12513
+
12514
+ .mec-login-form .mec-login-submit {
12515
+ float: right;
12516
+ text-align: right;
12517
+ width: 49%;
12518
+ padding-right: 2px;
12519
+ }
12520
+
12521
+ .mec-login-form .mec-login-input input {
12522
+ border: none;
12523
+ box-shadow: none;
12524
+ background: #fff;
12525
+ color: #ccc;
12526
+ border-left: 1px solid #e6e6e6;
12527
+ padding: 0;
12528
+ height: 100%;
12529
+ background-image: none !important;
12530
+ padding-left: 10px;
12531
+ padding-right: 10px;
12532
+ width: 230px;
12533
+ margin-left: 0;
12534
+ }
12535
+
12536
+ .mec-login-form .mec-login-input label {
12537
+ border: 1px solid #e6e6e6;
12538
+ height: 52px;
12539
+ display: inline-block;
12540
+ border-radius: 3px;
12541
+ overflow: hidden;
12542
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
12543
+ }
12544
+
12545
+ .mec-login-form .mec-login-input label i {
12546
+ padding: 15px 13px 17px 16px;
12547
+ vertical-align: middle;
12548
+ font-size: 20px;
12549
+ width: 50px;
12550
+ color: #c5cad0;
12551
+ background: #fafafa;
12552
+ margin-right: 0;
12553
+ float: left;
12554
+ }
12555
+
12556
+ .mec-login-form .mec-login-forgotpassword {
12557
+ float: left;
12558
+ width: 49%;
12559
+ text-align: left;
12560
+ padding-top: 10px;
12561
+ font-size: 13px;
12562
+ padding-left: 2px;
12563
+ }
12564
+
12565
+ .mec-login-form button {
12566
+ width: 120px;
12567
+ height: 44px;
12568
+ border: none;
12569
+ color: #fff;
12570
+ border-radius: 3px;
12571
+ font-size: 12px;
12572
+ font-weight: 700;
12573
+ letter-spacing: 1px;
12574
+ text-transform: uppercase;
12575
+ box-shadow: 0 4px 22px -7px #40d9f1;
12576
+ transition: all .22s ease;
12577
+ }
12578
+
12579
+ .mec-login-form button:hover {
12580
+ background: #222;
12581
+ box-shadow: 0 3px 14px -4px #333
12582
+ }
12583
+
12584
+ .mec-login-form-footer {
12585
+ width: 286px;
12586
+ margin: 0 auto;
12587
+ margin-top: 20px;
12588
+ clear: both;
12589
+ position: relative;
12590
+ display: block;
12591
+ min-height: 50px
12592
+ }
12593
+
12594
+ .mec-ajax-login-loading {
12595
+ position: absolute;
12596
+ background: #ffffffc2;
12597
+ left: 0;
12598
+ right: 0;
12599
+ top: 0;
12600
+ bottom: 0
12601
+ }
12602
+
12603
+ .lds-ripple {
12604
+ position: absolute;
12605
+ width: 64px;
12606
+ height: 64px;
12607
+ top: calc(50% - 23px);
12608
+ left: calc(50% - 23px)
12609
+ }
12610
+
12611
+ .lds-ripple div {
12612
+ position: absolute;
12613
+ border: 4px solid #40d9f1;
12614
+ opacity: 1;
12615
+ border-radius: 50%;
12616
+ animation: lds-ripple 1.2s cubic-bezier(0, .2, .1, .8) infinite
12617
+ }
12618
+
12619
+ .lds-ripple div:nth-child(2) {
12620
+ animation-delay: -.5s
12621
+ }
12622
+
12623
+ .mec-ajax-login-loading-text {
12624
+ position: absolute;
12625
+ min-width: 200px;
12626
+ top: calc(50% - 15px);
12627
+ left: calc(50% - 135px);
12628
+ color: #fff;
12629
+ padding: 10px 22px;
12630
+ border-radius: 3px
12631
+ }
12632
+
12633
+ .mec-ajax-login-loading-text.error {
12634
+ background: #ff876c;
12635
+ background: linear-gradient(95deg, #ff876c 0, #ff7455 50%, #ff5a35 100%);
12636
+ box-shadow: 0 5px 10px -5px #ff876c
12637
+ }
12638
+
12639
+ .mec-ajax-login-loading-text.success {
12640
+ background: #4cbf67;
12641
+ background: linear-gradient(95deg, #6fe08a 0, #58cf74 50%, #36cb58 100%);
12642
+ box-shadow: 0 5px 10px -5px #4cbf67
12643
+ }
12644
+
12645
+ @keyframes lds-ripple {
12646
+ 0% {
12647
+ top: 28px;
12648
+ left: 28px;
12649
+ width: 0;
12650
+ height: 0;
12651
+ opacity: 1;
12652
+ }
12653
+
12654
+ 100% {
12655
+ top: -1px;
12656
+ left: -1px;
12657
+ width: 58px;
12658
+ height: 58px;
12659
+ opacity: 0;
12660
+ }
12661
+ }
12662
+
12663
+ /* Stripe V3 */
12664
+ .mec-book-form-gateway-checkout [id*="mec_do_transaction_stripe_"] .mec-form-row:first-child {
12665
+ background: #f7f8f9;
12666
+ padding: 18px 22px;
12667
+ margin-bottom: 20px;
12668
+ }
12669
+
12670
+ .mec-events-meta-group-booking .StripeElement {
12671
+ box-sizing: border-box;
12672
+ height: 40px;
12673
+ padding: 10px 12px;
12674
+ border: 1px solid transparent;
12675
+ border-radius: 4px;
12676
+ background-color: white;
12677
+ box-shadow: 0 1px 3px 0 #e6ebf1;
12678
+ -webkit-transition: box-shadow 150ms ease;
12679
+ transition: box-shadow 150ms ease;
12680
+ margin-bottom: 20px;
12681
+ background: #fff;
12682
+ }
12683
+
12684
+ .mec-events-meta-group-booking .StripeElement--focus {
12685
+ box-shadow: 0 1px 3px 0 #cfd7df;
12686
+ }
12687
+
12688
+ .mec-events-meta-group-booking .StripeElement--invalid {
12689
+ border-color: #fa755a;
12690
+ }
12691
+
12692
+ .mec-events-meta-group-booking .StripeElement--webkit-autofill {
12693
+ background-color: #fefde5 !important;
12694
+ }
12695
+
12696
 
12697
  /* --------------------- */
assets/css/frontend.min.css CHANGED
@@ -1 +1 @@
1
- .lity-container,.mec-wrap,.mec-wrap div:not([class^=elementor-]){font-family:Montserrat,Helvetica,Arial,sans-serif}.entry-content .mec-wrap h1,.entry-content .mec-wrap h2,.entry-content .mec-wrap h3,.entry-content .mec-wrap h4,.entry-content .mec-wrap h5,.entry-content .mec-wrap h6,.mec-wrap h1,.mec-wrap h2,.mec-wrap h3,.mec-wrap h4,.mec-wrap h5,.mec-wrap h6{font-family:Montserrat,Helvetica,Arial,sans-serif;color:#171c24;font-weight:300;font-style:inherit;letter-spacing:normal;clear:none}.mec-wrap h1{font-size:50px;line-height:1.16;margin-bottom:12px;letter-spacing:-1px}.mec-wrap h2{font-size:36px;line-height:1.14;margin-bottom:10px}.mec-wrap h3{font-size:28px;line-height:1.2;margin-bottom:8px}.mec-wrap h4{font-size:24px;line-height:1.2;margin-bottom:10px}.mec-wrap h5{font-size:18px;line-height:1.3;margin-bottom:7px}.mec-wrap h6{font-size:16px;line-height:1.3;margin-bottom:4px}.mec-wrap .subheader{color:#849098}.mec-wrap h1 strong{font-weight:700}.mec-wrap p{margin:0 0 20px 0;color:#616161;font-size:14px;line-height:1.8}.mec-wrap .mec-event-article .mec-color-hover{box-shadow:none;border:none}.mec-wrap abbr,.mec-wrap acronym{cursor:auto;border:none}.entry-content .mec-wrap a{box-shadow:none}.mec-wrap .button,.mec-wrap a.button:not(.owl-dot),.mec-wrap button:not(.owl-dot),.mec-wrap input[type=button],.mec-wrap input[type=reset],.mec-wrap input[type=submit]{position:relative;border:none;border-radius:0;color:#fff;display:inline-block;font-size:12px;letter-spacing:1px;line-height:1.5;text-transform:uppercase;font-weight:600;text-decoration:none;cursor:pointer;margin-bottom:21px;margin-right:10px;line-height:1;padding:18px 20px 16px;background:#39c36e;-webkit-transition:all .21s ease;-moz-transition:all .21s ease;transition:all .21s ease}.mec-wrap .button:hover,.mec-wrap a.button:hover,.mec-wrap button:hover,.mec-wrap input[type=button]:hover,.mec-wrap input[type=reset]:hover,.mec-wrap input[type=submit]:hover{background:#222;color:#fff}.mec-booking-form-container button{display:block!important}.vertical-space,.vertical-space1,.vertical-space2,.vertical-space3,.vertical-space4,.vertical-space5{display:block;width:100%;margin:0;clear:both;border:0 none;height:20px}.vertical-space2{height:40px}.vertical-space3{height:60px}.vertical-space4{height:80px}.vertical-space5{height:100px}@media only screen and (max-width:479px){.vertical-space,.vertical-space1{height:8px}.vertical-space2{height:14px}.vertical-space3{height:28px}.vertical-space4{height:40px}.vertical-space5{height:60px}}@media only screen and (max-width:960px){.vertical-space,.vertical-space1{height:12px}.vertical-space2{height:18px}.vertical-space3{height:36px}.vertical-space4{height:50px}.vertical-space5{height:80px}}.mec-wrap abbr{cursor:auto;border-bottom:0}@-webkit-keyframes rotating{from{-ms-transform:rotate(0);-moz-transform:rotate(0);-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}to{-ms-transform:rotate(360deg);-moz-transform:rotate(360deg);-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotating{from{-ms-transform:rotate(0);-moz-transform:rotate(0);-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}to{-ms-transform:rotate(360deg);-moz-transform:rotate(360deg);-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.mec-wrap{font:14px/25px sans-serif;font-family:Montserrat,Helvetica,Arial,sans-serif;font-weight:400;color:#626262}.mec-wrap .mec-events a{border-bottom:none}.mec-wrap .mec-container a{box-shadow:none}.mec-event-content p{font-family:Roboto,sans-serif;font-weight:300}.mec-wrap .mec-clear:after,.mec-wrap .mec-clear:before{content:" ";display:table}.mec-wrap .mec-clear:after{clear:both}.mec-events-button{background:#fff;padding:12px 34px;font-size:13px;font-weight:400;letter-spacing:0;border:1px solid #e3e3e3;margin-right:10px;transition:.3s}.mec-wrap .mec-events-button:hover{color:#fff}.mec-no-event{display:none}#mec-active-current{display:block!important}.current-hide #mec-active-current{display:none!important}.mec-event-grid-classic .mec-event-article{position:relative;border:2px solid #e3e3e3;box-shadow:0 2px 0 0 rgba(0,0,0,.016);margin-bottom:30px;max-width:none}.mec-event-grid-classic .mec-event-content{background:#fff;color:#767676;padding:0 20px 5px;text-align:center;min-height:125px}.mec-event-grid-classic .mec-event-title{color:#202020;margin:10px 0;font-weight:700;font-size:20px;letter-spacing:1px;text-transform:uppercase}.mec-event-grid-classic .mec-event-title a{color:#202020;transition:all .24s ease}.mec-event-grid-classic .mec-event-date{font-weight:400;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#fff;padding:3px 20px;margin:0 -20px 20px -20px;text-align:center}.mec-event-grid-classic .mec-event-content p{font-size:15px;color:#8a8a8a}.mec-event-grid-classic .mec-event-detail{display:none}.mec-event-grid-classic img{margin-bottom:0;width:100%}.mec-event-footer{position:relative;border-top:1px solid #efefef;padding:20px;min-height:80px;margin:0;background:#fafafa}.mec-event-sharing-wrap{left:15px;position:absolute;list-style:none;margin:0}.mec-event-sharing-wrap .mec-event-sharing{position:absolute;padding:8px 0 2px;left:-6px;bottom:54px;margin:0;margin-top:6px;border-radius:5px;width:50px;visibility:hidden;opacity:0;border:1px solid #e2e2e2;background:#fff;box-shadow:0 0 9px 0 rgba(0,0,0,.06);z-index:99;-webkit-transition:all .18s ease;transition:all .18s ease}.mec-event-sharing-wrap .mec-event-sharing:after,.mec-event-sharing-wrap .mec-event-sharing:before{content:'';display:block;position:absolute;bottom:-10px;left:50%;margin-left:-10px;width:0;height:0;border-style:solid;border-width:10px}.mec-event-sharing-wrap .mec-event-sharing:before{bottom:-21px;border-color:#e2e2e2 transparent transparent transparent}.mec-event-sharing-wrap .mec-event-sharing:after{bottom:-19px;border-color:#fff transparent transparent transparent}.mec-event-sharing-wrap:hover .mec-event-sharing{opacity:1;visibility:visible}.mec-event-sharing-wrap li{text-align:center;border:0;display:block;margin-right:2px;overflow:hidden;margin:0 auto 6px;width:38px}.mec-event-sharing-wrap:hover>li{cursor:pointer;background-color:#40d9f1}.mec-event-sharing-wrap:hover li a{color:#fff}.mec-event-sharing-wrap>li{border:1px solid #d9d9d9}.mec-event-sharing-wrap li a,.mec-event-sharing-wrap:hover li ul li a{border:none;color:#767676}.mec-event-sharing-wrap li i{width:36px;height:36px;display:table-cell;vertical-align:middle}.mec-event-sharing-wrap .mec-event-sharing li a{display:block}.mec-event-sharing-wrap .mec-event-sharing li:hover a{color:#40d9f1}.mec-event-sharing .mec-event-share:hover .event-sharing-icon{background:#40d9f1;border-width:0 1px 0;cursor:pointer}.mec-event-sharing .mec-event-map{border-width:1px 0 1px}.mec-event-footer .mec-booking-button{box-shadow:none;transition:all .21s ease;font-size:11px;font-weight:500;letter-spacing:1px;text-transform:uppercase;background:#fff;color:#767676;border:1px solid #e8e8e8;position:absolute;top:20px;right:15px;padding:0 16px;line-height:37px;height:38px}.mec-event-footer .mec-booking-button:hover{background:#191919;color:#fff;border-color:#191919}@media only screen and (max-width:960px){.mec-event-grid-classic{margin-bottom:30px}}.mec-widget .mec-event-grid-classic.mec-owl-carousel{padding:36px 0 16px}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav{margin:5px 0;width:100%;position:absolute;top:15px;padding:0}.mec-skin-grid-container.mec-widget{padding-top:18px}.mec-widget .mec-event-grid-classic.mec-owl-carousel{padding:20px 0 16px}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav{margin:0;width:100%;position:absolute;top:0;padding:0}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav div{position:absolute;background:#fff;line-height:0;width:34px;height:26px;padding:6px;text-align:center;margin-top:-17px;border-radius:3px;border:1px solid #e2e2e2;text-align:center;box-shadow:0 2px 0 0 rgba(0,0,0,.028);transition:all .33s ease}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav i{font-size:12px;color:#40d9f1;cursor:pointer}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav .owl-next{right:0}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav .owl-prev{left:0}.mec-widget .mec-event-grid-classic.mec-owl-carousel .mec-event-sharing{display:none}.mec-widget .mec-event-grid-classic.mec-owl-carousel .mec-event-footer{text-align:center}.mec-widget .mec-event-grid-classic.mec-owl-carousel .mec-event-footer .mec-booking-button{position:static;padding:11px 16px}.widget .mec-event-footer ul.mec-event-sharing-wrap li a.mec-event-share-icon{padding:0}@media screen and (min-width:56.875em){.mec-widget .mec-month-container dl{margin-bottom:0}}.mec-widget .mec-event-grid-classic.owl-carousel .mec-event-footer{text-align:right}.mec-widget .mec-event-grid-classic.owl-carousel .mec-event-sharing-wrap{left:5px;padding-left:5px}.mec-widget .mec-event-grid-classic.owl-carousel .mec-event-sharing-wrap .mec-event-sharing{left:0}.mec-widget .mec-event-sharing-wrap .mec-event-sharing{position:absolute;top:auto;bottom:52px;margin:0;margin-top:0;border-radius:5px}.mec-widget .mec-event-sharing-wrap .mec-event-sharing:after{top:auto;bottom:-17px;border-color:#fff transparent transparent transparent}.mec-widget .mec-event-sharing-wrap .mec-event-sharing:before{top:auto;bottom:-18px;border-color:#e2e2e2 transparent transparent transparent}.mec-event-grid-clean{margin-bottom:10px;max-width:none}.mec-event-grid-clean .mec-event-article{margin-bottom:30px;position:relative;border:1px solid #e2e2e2;text-align:center;padding:15px 15px 0;background:#fff;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-grid-clean .mec-event-content{background:#fff;color:#767676;padding:25px 16px 0;text-align:left}.mec-event-grid-clean .mec-event-title{color:#202020;margin:0 0 10px 0;font-weight:700;font-size:21px;text-transform:capitalize}.mec-event-grid-clean .mec-event-title a{color:#202020;transition:all .24s ease}.mec-event-grid-clean .mec-event-date{font-weight:400;font-size:11px;text-transform:uppercase;letter-spacing:1px;background-color:#40d9f1;color:#fff;padding:3px 0;margin:0;text-align:center}.mec-event-grid-clean .mec-event-content p{font-size:15px;color:#9a9a9a;line-height:1.54}.mec-event-grid-clean img{margin-bottom:0;width:100%}.mec-event-grid-clean .event-grid-t2-head{margin-bottom:10px;color:#fff;padding:9px 14px 6px;text-align:left}.mec-event-grid-clean .event-grid-t2-head .mec-event-date{font-size:50px;line-height:50px;float:left;margin-right:11px}.mec-event-grid-clean .event-grid-t2-head .mec-event-month{text-transform:uppercase;font-size:17px;line-height:20px;padding-top:4px}.mec-event-grid-clean .event-grid-t2-head .mec-event-detail{font-size:12px}.mec-event-grid-clean .mec-event-sharing-wrap{left:0}.mec-event-grid-clean .mec-event-footer{position:relative;border-top:2px solid;padding:20px 0;margin:0 14px;text-align:left;background:0 0}.mec-event-grid-clean .mec-event-footer .mec-booking-button{right:0}.mec-event-grid-clean .row{margin-bottom:30px}.mec-event-grid-modern{margin-bottom:10px;max-width:none}.mec-event-grid-modern .mec-event-article{position:relative;border:1px solid #e2e2e2;text-align:center;margin-bottom:30px;padding:45px 15px 10px;background:#fff;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-grid-modern .mec-event-content{background:#fff;color:#767676;padding:35px 15px 10px;text-align:left}.mec-event-grid-modern .mec-event-title{color:#202020;margin:0 0 10px 0;font-weight:700;font-size:24px;text-transform:none;letter-spacing:-1px}.mec-event-grid-modern .mec-event-title a{color:#202020;transition:all .24s ease}.mec-event-grid-modern .mec-event-content p{font-size:15px;color:#9a9a9a;line-height:1.54}.mec-event-grid-modern img{margin-bottom:0;width:100%}.mec-event-grid-modern .event-grid-modern-head{margin-bottom:10px;padding:9px 14px 6px;text-align:left}.mec-event-grid-modern .event-grid-modern-head .mec-event-date{font-size:50px;line-height:50px;float:left;margin-right:11px}.mec-event-grid-modern .event-grid-modern-head .mec-event-month{text-transform:uppercase;font-size:17px;line-height:20px;padding-top:4px}.mec-event-grid-modern .event-grid-modern-head .mec-event-detail{font-size:12px}.mec-event-grid-modern .event-grid-modern-head .mec-event-day{margin-top:9px;color:silver;font-family:Roboto,sans-serif;font-size:35px;font-weight:100;text-transform:uppercase;letter-spacing:-1px}.mec-event-grid-modern .mec-event-footer{position:relative;height:90px;padding:20px 0;border:none;margin:0 14px;text-align:left;background:0 0}.mec-event-grid-modern .mec-event-footer .mec-booking-button{right:auto;left:0}.mec-event-grid-modern .mec-event-sharing-wrap{left:auto;right:0}.mec-event-grid-modern .mec-event-sharing{left:auto;right:-6px}.mec-event-grid-modern .mec-event-sharing-wrap li{border-radius:55px}.mec-event-grid-modern .row{margin-bottom:0}@media only screen and (max-width:479px){.mec-event-grid-modern .mec-event-article{padding-bottom:30px}.mec-event-grid-modern .mec-event-sharing{top:60px;left:0;right:auto}.mec-event-grid-modern .mec-event-footer .mec-booking-button{top:0}}.mec-event-title-soldout .soldout{background:#de3120;padding:4px 5px;color:#fff}.mec-event-title-soldout .soldout{background:#de3120;position:relative;top:-2px;border-radius:10px 0 0 20px;padding:2px 4px 2px 10px;color:#fff}.mec-event-title-soldout .soldout:before{content:' ';position:absolute;width:0;height:0;border-top:10px solid #de3120;border-bottom:10px solid #de3120;right:-10px;border-right:10px solid transparent;border-left:10px solid transparent;top:0}.mec-event-title-soldout .soldout:after{content:' ';position:absolute;width:6px;height:6px;background:#de3120;border-radius:50%;left:3px;top:4px;border:2px dashed #fff}.mec-event-grid-colorful .mec-event-article{min-height:400px;border:none;box-shadow:none;background:#40d9f1;padding-top:25px;margin:0;color:#fff}.mec-event-grid-colorful .mec-event-content{background:0 0}.mec-event-grid-colorful .event-grid-modern-head,.mec-event-grid-colorful .event-grid-modern-head .mec-event-date,.mec-event-grid-colorful .event-grid-modern-head .mec-event-day,.mec-event-grid-colorful .mec-event-content p,.mec-event-grid-colorful .mec-event-sharing-wrap>li>a,.mec-event-grid-colorful .mec-event-title a{color:#fff}.mec-event-grid-colorful .mec-event-footer .mec-booking-button{border:none}.mec-event-grid-colorful .mec-event-sharing-wrap>li{border-color:#fff}.mec-event-grid-colorful .mec-event-sharing-wrap:hover>li{background:#333;border-color:#333}.mec-event-grid-colorful .mec-event-title a.mec-color-hover:hover{color:#fff;text-decoration:underline}.mec-event-grid-colorful .mec-event-title .event-color{display:none}.mec-event-grid-colorful div[class^=col-md-]{padding:0 1px 1px 0;margin:0}@media only screen and (min-width:768px){.mec-wrap.mec-sm959.mec-event-grid-colorful .event-grid-modern-head .mec-event-day{font-size:26px}.mec-wrap.mec-sm959.mec-event-grid-colorful .event-grid-modern-head .mec-event-month{font-size:15px}.mec-wrap.mec-sm959.mec-event-grid-colorful .event-grid-modern-head .mec-event-date{font-size:50px}.mec-wrap.mec-sm959.mec-event-grid-colorful .mec-event-title{font-size:21px}.mec-wrap.mec-sm959.mec-event-grid-colorful .mec-event-content p{font-size:13px}}@media only screen and (min-width:768px) and (max-width:1200px){.mec-wrap.mec-sm959.mec-event-grid-colorful div[class^=col-md-]{width:50%}}.mec-event-list-minimal .mec-event-article{border-bottom:1px solid #efefef;padding:24px 0 16px}.mec-event-list-minimal .mec-wrap .col-md-9{padding:0}.mec-event-list-minimal .mec-event-date{position:relative;float:left;margin-right:30px;color:#fff;width:52px;padding:6px 4px 3px;text-align:center;text-transform:uppercase;border-radius:3px}.mec-event-list-minimal .mec-event-date span{display:block;font-size:24px;font-weight:700;text-align:center;margin-bottom:4px}.mec-event-list-minimal .mec-event-date:after{display:block;content:"";position:absolute;width:50px;left:1px;top:1px;height:30px;background:rgba(255,255,255,.1);box-shadow:0 4px 4px rgba(0,0,0,.02)}.mec-event-list-minimal .mec-event-title{margin-top:0;margin-bottom:10px;font-weight:700;font-size:18px;text-transform:uppercase;letter-spacing:0;padding-top:5px}.mec-event-list-minimal .mec-event-detail{font-size:15px;font-weight:300;line-height:1;letter-spacing:0;color:#9a9a9a;font-family:Roboto,sans-serif}.mec-event-list-minimal .btn-wrapper{text-align:right;padding-right:0;padding-top:6px}.mec-event-list-minimal .btn-wrapper .mec-detail-button{border-bottom:0;margin-bottom:14px;margin-right:0;box-shadow:none}.mec-event-list-minimal a.mec-detail-button{text-align:center;display:inline-block;background:#ededed;color:#191919;padding:12px;border-radius:2px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:2px;transition:all .24s ease}.mec-event-list-minimal a.mec-detail-button:hover{background:#292929;color:#fff}.vc_col-sm-4 .mec-event-list-minimal .mec-event-date,.vc_col-sm-6 .mec-event-list-minimal .mec-event-date{margin-right:12px}.vc_col-sm-4 .mec-event-list-minimal .mec-event-title,.vc_col-sm-6 .mec-event-list-minimal .mec-event-title{font-size:15px;letter-spacing:2px}@media only screen and (min-width:480px) and (max-width:767px){.mec-event-list-minimal .btn-wrapper{padding-left:0}.mec-event-list-minimal .mec-event-date{margin-right:10px}}@media only screen and (max-width:767px){.mec-event-list-minimal .btn-wrapper .mec-detail-button{display:block;text-align:center;margin:0;margin-top:16px;padding:8px}.mec-event-list-minimal .btn-wrapper{margin:12px 0}}@media only screen and (max-width:479px){.mec-event-list-minimal .mec-event-date{float:none;width:100%;margin-bottom:8px}.mec-event-list-minimal .mec-event-date span{display:inline;padding-right:25px;margin-right:7px;font-size:inherit}.mec-event-list-minimal .mec-event-date:after{width:45%;box-shadow:4px 0 4px rgba(0,0,0,.02)}.mec-event-list-minimal .btn-wrapper{text-align:center;padding-left:0}.mec-event-list-minimal{text-align:center}.mec-event-list-minimal .mec-event-detail{margin-bottom:10px}}.mec-wrap .mec-event-list-modern .mec-event-title{margin-top:0;margin-bottom:10px}.mec-event-list-modern .mec-event-article{border-bottom:1px solid #efefef;padding:30px 0 10px}.mec-event-list-modern .mec-event-article:last-child{border-bottom:none}.mec-event-list-modern .mec-event-title a{color:#191919;transition:all .24s ease;box-shadow:none}.mec-event-list-modern .mec-event-date{text-transform:uppercase;padding:10px 0}.mec-event-list-modern .mec-event-date .event-d{font-size:48px;display:table-cell;padding:10px 0 0}.mec-event-list-modern .mec-event-date .event-f{font-size:13px;display:table-cell;vertical-align:middle;padding-left:7px;font-weight:500;letter-spacing:3px;color:#777}.mec-event-list-modern .mec-event-detail{font-weight:300;color:#8a8a8a}.mec-event-list-modern .mec-event-date .event-da{margin-top:9px;color:silver;font-family:Roboto,sans-serif;font-size:28px;font-weight:100;text-transform:uppercase;letter-spacing:-1px}.mec-event-list-modern .mec-btn-wrapper .mec-booking-button{border-radius:1px;letter-spacing:2px;border:1px solid #e6e6e6;color:#333;background-color:#fff;padding:13px 20px;font-weight:700;font-size:11px;box-shadow:0 2px 0 0 rgba(0,0,0,.016);transition:all .28s ease}.mec-event-list-modern .mec-btn-wrapper .mec-booking-button:hover{border-color:#222;background:#222;color:#fff}.mec-event-list-modern .mec-event-title{font-weight:700;font-size:20px;text-transform:uppercase;letter-spacing:1px}.mec-event-list-modern .mec-event-detail{color:#9a9a9a;font-size:15px;font-weight:300;line-height:25px;font-family:Roboto,sans-serif}.mec-event-list-modern .mec-btn-wrapper{text-align:right;padding:10px 0;text-transform:uppercase}.mec-event-list-modern .mec-event-sharing{position:relative;margin:10px 0}.mec-event-list-modern .mec-event-sharing>li{display:inline-block;border:none;border-radius:50%;margin-right:3px}.mec-event-list-modern .mec-event-sharing>li:hover{display:inline-block}.mec-event-list-modern .mec-event-sharing>li:hover a i{color:#fff;background:#40d9f1;border-color:#40d9f1}.mec-event-list-modern .mec-event-sharing>li i{width:36px;display:inline-block;line-height:35px;color:#767676;text-align:center;border-radius:50%;border:1px solid #ddd;font-size:14px}.mec-event-list-modern .mec-event-sharing .mec-event-share:hover .mec-event-sharing-icon{background:#40d9f1;border-color:#40d9f1;cursor:pointer;border-radius:50%}.mec-event-list-modern .mec-event-sharing li:hover a i{background:#40d9f1}@media only screen and (min-width:768px){.mec-event-list-modern .mec-event-article{position:relative;min-height:160px;overflow:hidden}.mec-event-list-modern .col-md-2.col-sm-2{width:210px;position:absolute;left:0;top:20px}.mec-event-list-modern .col-md-4.col-sm-4.mec-btn-wrapper{width:180px;padding:0;position:absolute;right:0;top:30%}.mec-event-list-modern .col-md-6.col-sm-6{width:100%;padding-left:225px;padding-right:195px}}@media only screen and (max-width:767px){.mec-event-list-modern .mec-btn-wrapper .mec-booking-button{letter-spacing:1px;border:1px solid #e1e1e1;padding:8px 16px}.mec-event-list-modern .mec-btn-wrapper{padding:0 0 12px}.mec-event-list-modern .mec-event-sharing{margin-bottom:0}}.mec-event-grid-minimal .mec-event-article{margin:15px 0;min-height:80px;display:table}.mec-event-grid-minimal .event-detail-wrap{display:table-cell;vertical-align:middle}.mec-event-grid-minimal .mec-event-date{width:70px;float:left;margin-right:20px;padding:12px 16px 10px;text-align:center;text-transform:uppercase;border-radius:4px;border:1px solid #e6e6e6;transition:all .37s ease-in-out;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-grid-minimal .mec-event-date span{display:block;font-size:24px;font-weight:700;text-align:center;margin-bottom:4px;color:#2a2a2a;transition:color .3s ease}.mec-event-grid-minimal .mec-event-title{margin-top:0;margin-bottom:10px;font-weight:700;line-height:21px;font-size:16px;text-transform:uppercase;transition:color .3s ease}.mec-event-grid-minimal .mec-event-title a{color:#191919;transition:color .3s ease}.mec-event-grid-minimal .mec-event-detail{font-size:15px;font-weight:300;line-height:1;letter-spacing:0;color:#9a9a9a;font-family:Roboto,sans-serif}.mec-event-grid-minimal .mec-event-date:hover{color:#fff}.mec-event-grid-minimal .mec-event-date:hover span{color:#fff}.mec-event-list-classic .mec-event-article{padding:12px 0;margin-bottom:20px}.mec-event-list-classic .mec-event-image{float:left;width:86px;margin-right:20px}.mec-event-list-classic .mec-event-date{font-weight:400;font-size:13px;letter-spacing:0;line-height:18px}.mec-event-list-classic .mec-event-date span{font-weight:500;margin-bottom:6px}.mec-event-list-classic .mec-event-title{font-size:15px;margin:10px 0 12px;font-weight:700;text-transform:uppercase}.mec-event-list-classic .mec-event-title a{color:#494949;transition:color .3s ease}.mec-event-list-classic .mec-event-detail{color:#777;font-weight:400;line-height:12px;font-size:12px;overflow:hidden}.mec-event-list-classic a.magicmore{padding:10px 16px;color:#fff;background:#222;letter-spacing:2px;font-size:11px}.mec-event-list-classic a.magicmore:after{content:"";display:none}.mec-event-list-classic a.magicmore:hover{color:#40d9f1}.mec-event-grid-simple .mec-event-article{position:relative;margin-bottom:30px}.mec-event-grid-simple .mec-event-article:after{border-right:1px solid #e6e6e6;height:60px;position:absolute;top:50%;margin-top:-30px;right:-1px}.mec-event-grid-simple .row div:last-child .mec-event-article:after{border:none}.mec-event-grid-simple .row{margin:15px 0 30px;text-align:center}.mec-event-grid-simple .mec-event-date{padding:0;margin:0;text-transform:capitalize;font-size:12px;font-weight:700}.mec-event-grid-simple .mec-event-title{margin-top:0;margin-bottom:10px;font-weight:700;line-height:21px;font-size:15px;padding-top:5px;text-transform:uppercase;transition:color .37s ease}.mec-event-grid-simple .mec-event-title a{color:#494949;transition:color .3s ease}.mec-event-grid-simple .mec-event-detail{font-family:Roboto,sans-serif;font-weight:400;line-height:1;letter-spacing:0;font-size:13px;color:#777}.mec-event-grid-simple:hover .mec-event-title{color:#40d9f1}.mec-event-grid-simple:hover .mec-event-date{background:0 0}.event-last:after{display:none}@media only screen and (max-width:767px){.mec-event-grid-simple .mec-event-article{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #eee}.mec-event-grid-simple .mec-event-article:after{border:none}}.mec-event-grid-novel .mec-event-article{position:relative;margin-bottom:30px;padding:60px 5% 60px 7%;border:1px solid rgba(255,255,255,.12);border-radius:10px;background-color:#0050fd;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;z-index:1}.mec-event-grid-novel .mec-event-article .novel-grad-bg{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:10px;opacity:0;z-index:-1;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}.mec-event-grid-novel .mec-event-article:hover{-webkit-box-shadow:0 13px 36px 0 rgba(0,0,0,.23);box-shadow:0 13px 36px 0 rgba(0,0,0,.23);border-color:transparent}.mec-event-grid-novel .mec-event-article:hover .novel-grad-bg{background-image:-webkit-gradient(linear,left top,right top,from(#262e32),to(#0e1015));background-image:-webkit-linear-gradient(left,#262e32 0,#0e1015 100%);background-image:-o-linear-gradient(left,#262e32 0,#0e1015 100%);background-image:linear-gradient(90deg,#262e32 0,#0e1015 100%);opacity:1}.mec-event-grid-novel .mec-event-image{float:left;width:150px;height:150px}.mec-event-grid-novel .mec-event-image img{width:150px;height:150px;border-radius:50%}.mec-event-grid-novel .mec-event-detail-wrap{margin-left:200px}.mec-event-grid-novel .mec-event-content h4{position:relative;margin-bottom:10px;display:inline-block}.mec-event-grid-novel .mec-event-content h4 a{font-size:24px;line-height:35px;color:#fafcff}.mec-event-grid-novel .mec-event-content h4::before{content:'';position:absolute;top:8px;left:-30px;width:17px;height:17px;background:#5cd0ed;opacity:.4;border-radius:50%}.mec-event-grid-novel .mec-event-content h4::after{content:'';position:absolute;top:12px;left:-26px;width:9px;height:9px;background:#5cd0ed;border-radius:50%}.mec-event-grid-novel .mec-event-address,.mec-event-grid-novel .mec-event-detail,.mec-event-grid-novel .mec-event-month{position:relative;padding-left:35px;font-size:15px;line-height:30px;color:rgba(255,255,255,.4)}.mec-event-grid-novel .mec-event-address::before,.mec-event-grid-novel .mec-event-detail::before,.mec-event-grid-novel .mec-event-month::before{position:absolute;top:6px;left:6px;font-size:17px;font-family:simple-line-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1}.mec-event-grid-novel .mec-event-month::before{content:"\e075"}.mec-event-grid-novel .mec-event-detail::before{content:"\e081"}.mec-event-grid-novel .mec-event-address::before{content:"\e096"}.mec-event-grid-novel .mec-event-footer{clear:both;padding:20px 0;border-top:none;background:0 0}.mec-event-grid-novel .mec-event-footer .mec-booking-button{right:auto;left:0;height:42px;width:148px;padding:0 20px;font-size:14px;font-weight:400;line-height:42px;text-align:center;color:#fff;background:0 0;border-color:rgba(255,255,255,.1);border-radius:50px}.mec-event-grid-novel .mec-event-footer .mec-booking-button:hover{background-color:rgba(255,255,255,.1)}.mec-event-grid-novel .mec-event-sharing-wrap{left:175px;cursor:pointer}.mec-event-grid-novel .mec-event-sharing-wrap>li{border-color:rgba(255,255,255,.1);border-radius:50%}.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing{top:-5px;left:0;padding:5px 10px 2px 50px;min-width:150px;width:inherit;height:37px;background-color:rgba(255,255,255,.1);-webkit-box-shadow:none;box-shadow:none;border:none;border-radius:50px}.mec-event-grid-novel .mec-event-sharing-wrap:hover>li{background-color:rgba(255,255,255,.1)}.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing::after,.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing::before{display:none}.mec-event-grid-novel .mec-event-sharing .mec-event-social-icon,.mec-event-grid-novel .mec-event-sharing .mec-event-social-icon a,.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing li i{display:inline}.mec-event-grid-novel .mec-event-sharing .mec-event-social-icon a{padding:0 10px}.mec-event-grid-novel .mec-event-sharing-wrap>li a{color:#fff}.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing li a{color:rgba(255,255,255,.4)}.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing li a:hover{color:rgba(255,255,255,1)}@media only screen and (max-width:1200px){.mec-event-grid-novel .row .col-md-6.col-sm-6{width:100%;float:none}.mec-event-grid-novel .mec-event-image{float:none;margin-top:-20px;margin-bottom:20px}.mec-event-grid-novel .mec-event-detail-wrap{margin-left:20px}.mec-event-grid-novel .mec-event-footer{margin-top:30px}}@media only screen and (max-width:767px){.mec-event-grid-novel .mec-event-footer{margin-top:0;padding-top:30px;margin-bottom:24px}.mec-event-grid-novel .mec-event-footer .mec-booking-button{display:block;position:relative}.mec-event-grid-novel .mec-event-sharing-wrap{left:0;bottom:-55px}.mec-event-grid-novel .mec-event-content h4 a{font-size:20px;line-height:1.3}}.mec-event-cover-modern{position:relative}.mec-event-cover-modern .mec-event-cover-a{background:0 0;position:absolute;color:#fff;bottom:0;left:0;text-decoration:none}.mec-event-cover-modern .mec-event-cover-a .mec-event-overlay{transition:all .5s;opacity:.8;width:100%;height:100%;position:absolute}.mec-event-cover-modern .mec-event-cover-a:hover .mec-event-overlay{opacity:1}.mec-event-cover-modern .mec-event-detail{padding:40px;position:relative}.mec-event-cover-modern .mec-event-cover-a:hover .mec-event-tag{color:#333;transition:all .5s}.mec-event-cover-modern .mec-event-cover-a .mec-event-title:hover{text-decoration:underline}.mec-event-cover-modern .mec-event-tag{background:#fff;display:inline-block;padding:5px 9px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-bottom:24px}.mec-event-cover-modern .mec-event-date{text-transform:uppercase;font-size:17px;font-weight:300}.mec-event-cover-modern .mec-event-title{color:#fff;text-transform:uppercase;font-size:40px;font-weight:700;margin:6px 0}.mec-event-cover-modern .mec-event-place{font-weight:400;font-size:18px;font-family:Roboto,sans-serif}@media only screen and (max-width:767px){.mec-event-cover-modern .mec-event-cover-a{width:100%}}.mec-event-cover-classic{position:relative;overflow:hidden;background:#fff;padding:6px;border:1px solid #e8e8e8}.mec-event-cover-classic .mec-event-overlay{position:absolute;left:6px;right:6px;bottom:6px;top:6px;width:auto;height:auto;background-color:rgba(36,36,36,.4);transition:all .33s ease-in-out}.mec-event-cover-classic:hover .mec-event-overlay{background-color:rgba(36,36,36,.6)}.mec-event-cover-classic .mec-event-content{font-size:15px;color:#fff;position:absolute;bottom:0;padding:50px 35px;transition:all .33s ease-in-out}.mec-event-cover-classic .mec-event-date{font-size:14px;text-transform:uppercase;font-weight:400;line-height:1.6}.mec-event-cover-classic .mec-event-date span{display:block;font-weight:700;font-size:16px}.mec-event-cover-classic .mec-event-title{color:#fff;margin:20px 0 38px;font-size:24px;font-weight:700;text-transform:uppercase;font-style:normal}.mec-event-cover-classic .mec-btn-wrapper{text-align:left}.mec-event-cover-classic .mec-event-icon{font-size:18px;float:left;margin-right:14px;color:#fff;padding:13px}.mec-event-cover-classic .mec-event-button{color:#fff;background-color:#191919;border:2px #191919 solid;padding:12px 20px;letter-spacing:3px;font-size:12px;font-weight:700;font-style:normal;transition:all .22s ease;text-decoration:none}.mec-event-cover-classic .mec-event-button:hover{color:#191919;background-color:#fff;border-color:#fff;border-radius:1px}.mec-event-cover-classic .mec-event-image img{min-width:100%}@media only screen and (max-width:960px){.mec-event-cover-classic .mec-event-content{padding:20px}.mec-event-cover-classic .mec-event-button{font-size:11px;padding:7px 10px;letter-spacing:1px}.mec-event-cover-classic .mec-event-title{font-size:19px;margin:15px 0 25px}.mec-event-cover-classic .mec-event-date{font-size:12px}}@media only screen and (max-width:767px){.mec-event-cover-classic{margin-bottom:30px}}@media only screen and (max-width:479px){.mec-event-cover-classic .mec-event-content{padding:15px;font-size:15px}.mec-event-cover-classic .mec-event-title{font-size:15px;margin:10px 0}.mec-event-cover-classic .mec-event-button{font-size:10px;padding:6px;letter-spacing:1px}.mec-event-cover-classic .mec-event-icon{padding:10px}}.mec-load-more-wrap{text-align:center;display:block;width:100%;padding-top:20px;text-align:center;position:relative}.mec-load-more-button{box-shadow:none;transition:all .21s ease;font-size:12px;font-weight:500;letter-spacing:1px;text-transform:uppercase;background:#fff;color:#767676;border:2px solid #e8e8e8;border-radius:50px;padding:0 28px;margin-bottom:20px;cursor:pointer;line-height:40px;font-family:Montserrat,Helvetica,Arial,sans-serif;height:42px;display:inline-block}.mec-load-more-button:hover{background:#191919;color:#fff;border-color:#191919}.mec-load-more-loading{content:url(../img/ajax-loader.gif);cursor:wait;background:0 0;border-style:none}.mec-load-more-loading:hover{background:0 0}.mec-modal-preloader,.mec-month-navigator-loading{width:100%;height:100%;background:no-repeat rgba(255,255,255,.88) url(../img/ajax-loader.gif) center;border-style:none;position:fixed;left:0;right:0;bottom:0;top:0;z-index:9}.mec-event-calendar-classic .mec-calendar-side .mec-calendar-table{min-height:1024px}.mec-calendar-side .mec-calendar-table{min-height:450px}.mec-skin-weekly-view-events-container.mec-month-navigator-loading{margin-top:0}.mec-calendar.mec-event-calendar-classic .mec-calendar-side{display:block}.mec-skin-daily-view-events-container.mec-month-navigator-loading{margin-top:0}@media only screen and (min-width:961px){.mec-wrap.mec-sm959 .mec-calendar-side .mec-calendar-table{min-height:1px}}@media only screen and (max-width:479px){.mec-calendar-side .mec-calendar-table{min-height:1px}}.mec-event-cover-clean{position:relative;border:1px solid #e6e6e6;padding:8px}.mec-event-cover-clean .mec-event-overlay{height:100%;background-color:rgba(36,36,36,.4);position:absolute;width:100%;left:0;border:8px solid #fff;top:0;transition:all .5s ease-in-out}.mec-event-cover-clean .mec-event-content{color:#fff;position:absolute;bottom:20px;padding:40px 60px;transition:all .5s ease-in-out}.mec-event-cover-clean .mec-event-title{color:#fff;font-weight:700;margin:46px 0 19px;font-size:29px;text-transform:uppercase;text-shadow:0 0 1px rgba(0,0,0,.5)}.mec-event-cover-clean .mec-event-title a{color:#fff;transition:all .5s;text-decoration:none;outline:0;border:none;box-shadow:none}.mec-event-cover-clean .mec-event-title a:hover{text-decoration:underline}.mec-event-cover-clean .mec-event-date{position:absolute;top:-20px;right:60px;color:#fff;width:60px;padding:14px 10px;z-index:1}.mec-event-cover-clean .mec-event-date div{text-align:center;text-transform:uppercase;letter-spacing:1px;line-height:16px}.mec-event-cover-clean .mec-event-date .dday{padding-bottom:15px;border-bottom:1px solid rgba(255,255,255,.5);margin-bottom:13px;font-size:24px}.mec-event-cover-clean .mec-event-date .dmonth{letter-spacing:2px}.mec-event-cover-clean .mec-event-place{font-size:18px;font-family:Roboto,sans-serif}.mec-event-cover-clean .mec-event-image img{width:100%}@media only screen and (max-width:768px){.mec-event-cover-clean .mec-event-content{padding:20px;bottom:5px}.mec-event-cover-clean .mec-event-title{font-size:23px}.mec-event-cover-clean .mec-event-date{right:20px;padding:10px;width:50px}}@media only screen and (max-width:479px){.mec-event-cover-clean .mec-event-content{padding:10px}.mec-event-cover-clean .mec-event-title{font-size:19px;padding-right:25px}.mec-event-cover-clean .mec-event-date{right:-20px;top:-10px}.mec-event-cover-clean .mec-event-detail{font-size:12px}}.mec-month-divider{text-align:center;margin:60px 0 40px 0}.widget .mec-month-divider{margin:10px 0}.mec-month-divider span{text-transform:uppercase;font-size:22px;font-weight:700;padding-bottom:5px;color:#313131;border-bottom:4px solid #ebebeb;width:100%;display:block;padding-bottom:10px;position:relative}.mec-month-divider span:before{border-bottom:4px solid #40d9f1;font-size:6px;content:"";text-align:center;position:absolute;bottom:-4px;margin-left:-30px;left:50%;width:60px}.widget .mec-month-divider span{font-size:13px}.mec-event-list-standard .mec-events-pagination{margin-top:60px;border-top:4px solid #ebebeb;min-height:80px;padding-top:20px}.mec-event-list-standard .mec-events-pagination .mec-events-pag-previous{float:left;margin-left:0}.mec-event-list-standard .mec-events-pagination .mec-events-pag-next{float:right;margin-right:0}.mec-event-list-standard .mec-event-article{position:relative;display:block;margin-bottom:25px;border:1px solid #e9e9e9;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-list-standard .mec-topsec{display:table;width:100%}.mec-event-list-standard .col-md-3.mec-event-image-wrap{padding-left:0}.mec-event-list-standard .mec-event-content{padding-top:15px;padding-right:30px}.mec-event-list-standard .mec-event-title{font-size:29px;font-weight:700;letter-spacing:-1px;margin:0 0 10px}.mec-event-list-standard .mec-event-title a{color:#292929;transition:color .3s ease}.mec-event-list-standard .mec-col-table-c{display:table-cell;height:100%;vertical-align:middle;float:none!important}.mec-event-list-standard .mec-col-table-c.mec-event-meta-wrap{padding-top:15px}.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap{vertical-align:top}.mec-topsec .mec-event-image{line-height:1px}.mec-event-list-standard .mec-event-meta-wrap{border-left:1px solid #eee}.mec-event-list-standard .mec-time-details{text-transform:uppercase;font-size:11px;font-weight:300;padding-top:0;text-align:left;padding-left:30px}.mec-event-list-standard .mec-event-meta .mec-event-address{font-style:normal;letter-spacing:0;font-size:13px;color:#8a8a8a}.mec-event-list-standard .mec-event-meta span.mec-event-d,.mec-event-list-standard .mec-event-meta span.mec-event-m{font-size:17px;font-weight:700;padding-right:6px;color:#444;text-transform:uppercase}.mec-event-list-standard .mec-date-details,.mec-event-list-standard .mec-time-details,.mec-event-list-standard .mec-venue-details{position:relative;padding-left:28px;margin-bottom:10px}.mec-event-list-standard .mec-date-details:before,.mec-event-list-standard .mec-time-details:before,.mec-event-list-standard .mec-venue-details:before{content:"\f041";font-family:fontawesome;position:absolute;left:6px;font-size:15px}.mec-event-list-standard .mec-date-details:before{content:"\f073"}.mec-event-list-standard .mec-time-details:before{content:"\f017"}.mec-event-list-minimal .mec-event-title a{color:#292929;transition:color .3s ease}.mec-event-meta-wrap .mec-price-details{margin-bottom:10px}.mec-price-details i{margin-right:5px;vertical-align:text-top}.mec-event-meta-wrap .mec-event-meta .mec-price-details i:before{font-size:15px}@media only screen and (max-width:960px){.mec-event-list-standard .mec-topsec{display:block}.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap{display:block;width:40%}.mec-event-list-standard .mec-col-table-c.mec-event-content-wrap{display:block;min-height:230px}.mec-event-list-standard .mec-event-meta-wrap{display:block;border-left:none;border-top:1px solid #eee;width:100%;float:none;padding-top:20px}}@media only screen and (min-width:480px) and (max-width:960px){.mec-event-list-standard .mec-col-table-c.mec-event-content-wrap,.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap{display:table-cell}}@media only screen and (max-width:479px){.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap,.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap img{float:none;width:100%;padding:0}.mec-event-list-standard .mec-col-table-c.mec-event-content-wrap{padding:10px 10px 10px 30px}}.mec-wrap .mec-events-cal-links{margin-bottom:0}.mec-single-event #mec-wrap{padding:0;margin-top:35px}.mec-wrap .mec-single-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:33px}.mec-single-event .mec-event-content{padding:40px 0 30px;margin-bottom:10px}.mec-single-event .mec-events-meta-group-booking,.mec-single-event .mec-frontbox{margin-bottom:30px;padding:20px 30px;background:#fff;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-wrap #main-content{overflow:hidden;padding-top:35px}.mec-single-event .mec-map-get-direction-address-cnt{position:relative}.mec-single-event .mec-map-get-direction-address-cnt input.mec-map-get-direction-address{width:100%;height:46px;padding:13px 10px;margin-bottom:0;background:#fcfcfc;border:1px solid #e0e0e0;border-radius:0;box-shadow:inset 0 2px 5px rgba(0,0,0,.081)}.mec-single-event .mec-map-get-direction-address-cnt input.mec-map-get-direction-address:focus{color:#444;background:#fff;border-color:#b0b0b0;box-shadow:0 0 3px rgba(0,0,0,.2)}.mec-single-event .mec-map-get-direction-btn-cnt input{width:100%}.mec-single-event .mec-map-get-direction-reset{position:absolute;z-index:2;top:5px;right:10px;font-size:11px;cursor:pointer}.mec-events-meta-group-tags{margin-top:20px}.mec-events-meta-group-tags a{display:inline-block;color:#444;font-size:11px;text-transform:uppercase;letter-spacing:1.5px;font-weight:500;padding:3px 7px;border:1px solid #ddd;border-radius:2px;background:#fff;margin:1px 3px}.mec-events-meta-group-tags a:hover{text-decoration:underline;background:#f9f9f9}.mec-local-time-details li{list-style:none}.mec-single-event:not(.mec-single-modern) .mec-local-time-details{background:#f7f7f7;padding:12px 14px 8px;margin-bottom:12px;vertical-align:baseline;position:relative;border:none}.mec-single-event:not(.mec-single-modern) .mec-local-time-details ul{margin:0;padding-left:35px}.mec-single-event:not(.mec-single-modern) .mec-local-time-details h3{border:none;padding-left:15px}.mec-single-event:not(.mec-single-modern) .mec-local-time-details h3:before{display:none}.mec-single-event.mec-single-modern i.mec-sl-speedometer{display:none}.mec-single-event .mec-events-meta-group-booking{padding-bottom:30px}.mec-single-event .mec-events-meta-group-booking ul{list-style:none;margin-left:0;padding-left:0}.mec-single-event .mec-events-meta-group-booking ul li{padding:0;list-style:none;margin-top:40px}.mec-single-event .mec-events-meta-group-booking h4{margin-bottom:20px;font-size:23px;font-weight:700}.mec-single-event .mec-events-meta-group-booking li h4{font-size:19px}.mec-single-event .mec-events-meta-group-booking button,.mec-single-event .mec-events-meta-group-booking input{border-radius:0;margin-bottom:6px}.mec-single-event .mec-events-meta-group-booking button{min-width:170px;margin-top:5px}.mec-single-event .mec-events-meta-group-booking button{margin-left:15px}.mec-single-event .mec-book-form-coupon button{margin-left:0}.mec-single-event .mec-book-form-gateway-checkout button{margin-left:0}.mec-single-event .mec-book-first,.mec-single-event .mec-event-tickets-list{padding-left:15px;padding-right:15px}.mec-single-event label.mec-fill-attendees{margin-left:15px!important}.mec-single-event .mec-events-meta-group-booking .mec-event-ticket-available{display:block;margin-bottom:20px;margin-top:-17px;font-size:11px;color:#8a8a8a}.mec-single-event .mec-events-meta-group-booking .mec-book-price-total{display:inline-block;margin-bottom:10px;font-size:26px;color:#39c36e;font-weight:700;padding:10px 0}.mec-single-event .mec-events-meta-group-booking form{margin:0}.mec-single-event .mec-events-meta-group-booking h5 span,.mec-single-event .mec-events-meta-group-booking label{color:#424242;font-size:12px;font-weight:300;letter-spacing:0;margin:3px 0;display:block;clear:none;padding:5px 1em 3px 0}.mec-single-event .mec-events-meta-group-booking h5 span{display:inline-block}.mec-single-event .mec-events-meta-group-booking h5 span.mec-ticket-variation-name{padding-right:5px;text-transform:capitalize}.mec-single-event .mec-events-meta-group-booking input::-webkit-input-placeholder{color:#aaa}.mec-single-event .mec-events-meta-group-booking input:-moz-placeholder{color:#aaa}.mec-single-event .mec-events-meta-group-booking input[type=date],.mec-single-event .mec-events-meta-group-booking input[type=email],.mec-single-event .mec-events-meta-group-booking input[type=number],.mec-single-event .mec-events-meta-group-booking input[type=password],.mec-single-event .mec-events-meta-group-booking input[type=tel],.mec-single-event .mec-events-meta-group-booking input[type=text],.mec-single-event .mec-events-meta-group-booking select,.mec-single-event .mec-events-meta-group-booking textarea{display:block;background:#fcfcfc;min-height:42px;min-width:180px;font-size:13px;border:1px solid #e0e0e0;padding:13px 10px;width:330px;margin-bottom:20px;box-shadow:inset 0 2px 4px rgba(0,0,0,.051);clear:both}.wbmec-mandatory{padding-left:5px;font-size:14px}.mec-single-event .mec-events-meta-group-booking .mec-red-notification input,.mec-single-event .mec-events-meta-group-booking .mec-red-notification select,.mec-single-event .mec-events-meta-group-booking .mec-red-notification textarea{border:1px solid #ff3c3c}.mec-single-event .mec-events-meta-group-booking .mec-red-notification input[type=checkbox],.mec-single-event .mec-events-meta-group-booking .mec-red-notification input[type=radio]{outline:1px solid #ff3c3c}@media only screen and (max-width:479px){.mec-single-event .mec-events-meta-group-booking input[type=date],.mec-single-event .mec-events-meta-group-booking input[type=email],.mec-single-event .mec-events-meta-group-booking input[type=number],.mec-single-event .mec-events-meta-group-booking input[type=password],.mec-single-event .mec-events-meta-group-booking input[type=tel],.mec-single-event .mec-events-meta-group-booking input[type=text],.mec-single-event .mec-events-meta-group-booking select,.mec-single-event .mec-events-meta-group-booking textarea{width:100%}}.mec-single-event .mec-events-meta-group-booking input[type=email]:focus,.mec-single-event .mec-events-meta-group-booking input[type=number]:focus,.mec-single-event .mec-events-meta-group-booking input[type=password]:focus,.mec-single-event .mec-events-meta-group-booking input[type=tel]:focus,.mec-single-event .mec-events-meta-group-booking input[type=text]:.mec-single-event .mec-events-meta-group-booking input[type=date],.mec-single-event .mec-events-meta-group-booking select:focus,.mec-single-event .mec-events-meta-group-booking textarea:focus,focus{border:1px solid #aaa;color:#444;background:#fff;-moz-box-shadow:0 0 3px rgba(0,0,0,.2);-webkit-box-shadow:0 0 3px rgba(0,0,0,.2);box-shadow:0 0 3px rgba(0,0,0,.2);outline:0}.mec-single-event .mec-events-meta-group-booking input[type=checkbox],.mec-single-event .mec-events-meta-group-booking input[type=radio]{margin-right:6px;margin-top:5px;min-height:20px;clear:none;margin:0 0 0 2px}.lity-container .mec-events-meta-group-booking input[type=radio]:before,.mec-single-event .mec-events-meta-group-booking input[type=radio]:before{content:"";display:inline-block;background:#fff;border-radius:18px;width:18px;height:18px;margin:-1px 0 0 -3px;cursor:pointer;border:2px solid #e1e7ed;box-shadow:0 2px 15px -3px rgba(69,77,89,.32)}.lity-container .mec-events-meta-group-booking input[type=radio]:checked:before,.mec-single-event .mec-events-meta-group-booking input[type=radio]:checked:before{border:7px solid #008aff;background:#fff;box-shadow:0 3px 16px -3px #008aff}.lity-container .mec-events-meta-group-booking input[type=radio],.mec-single-event .mec-events-meta-group-booking input[type=radio]{min-height:0;margin:0;margin-right:6px}.mec-single-event .mec-events-meta-group-booking input[type=checkbox]{float:left}.lity-container .mec-events-meta-group-booking .mec_book_first_for_all,.mec-single-event .mec-events-meta-group-booking .mec_book_first_for_all{display:none}.mec-events-meta-group-booking ul.mec-book-price-details{list-style:none;border:1px solid #eee;padding:0;overflow:hidden}.mec-events-meta-group-booking ul.mec-book-price-details li{font-size:15px;color:#a9a9a9;list-style:none;padding:13px 18px;margin:0;float:left;border-right:1px solid #eee}.mec-events-meta-group-booking ul.mec-book-price-details li:last-child{border-right:none}.mec-events-meta-group-booking ul.mec-book-price-details li span.mec-book-price-detail-amount{font-weight:700;font-size:21px;color:#222}.lity-container .mec-events-meta-group-booking label.wn-checkbox-label,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label{height:14px;width:14px;background-color:transparent;border:1px solid #d4d4d4;position:relative;display:inline-block;-moz-transition:border-color ease .2s;-o-transition:border-color ease .2s;-webkit-transition:border-color ease .2s;transition:border-color ease .2s;cursor:pointer;box-shadow:0 2px 16px -2px rgba(0,0,0,.2);vertical-align:middle;margin-right:3px;margin-top:-2px}.lity-container .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label,.mec-single-event .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label{border-color:#008aff;box-shadow:0 2px 14px -3px #008aff}.lity-container .mec-events-meta-group-booking label.wn-checkbox-label:after,.lity-container .mec-events-meta-group-booking label.wn-checkbox-label:before,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label:after,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label:before{position:absolute;height:0;width:1px;background-color:#008aff;display:inline-block;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;-webkit-transform-origin:left top;transform-origin:left top;content:'';-webkit-transition:opacity ease .5;-moz-transition:opacity ease .5;transition:opacity ease .5}.lity-container .mec-events-meta-group-booking label.wn-checkbox-label:before,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label:before{top:8px;left:7px;box-shadow:0 0 0 2px #fff;-moz-transform:rotate(-145deg);-ms-transform:rotate(-145deg);-o-transform:rotate(-145deg);-webkit-transform:rotate(-145deg);transform:rotate(-145deg)}.lity-container .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label::before,.mec-single-event .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label::before{height:12px;-moz-animation:dothatopcheck .16s ease 0s forwards;-o-animation:dothatopcheck .16s ease 0s forwards;-webkit-animation:dothatopcheck .16s ease 0s forwards;animation:dothatopcheck .16s ease 0s forwards}.lity-container .mec-events-meta-group-booking label.wn-checkbox-label:after,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label:after{top:6px;left:3px;-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.lity-container .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label::after,.mec-single-event .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label::after{-moz-animation:dothabottomcheck 80ms ease 0s forwards;-o-animation:dothabottomcheck 80ms ease 0s forwards;-webkit-animation:dothabottomcheck 80ms ease 0s forwards;animation:dothabottomcheck 80ms ease 0s forwards;height:4px}.mec-single-event .mec-events-meta-group-booking button[type=submit]:after,.mec-single-event a.button:after{display:none;font-family:simple-line-icons;content:"\e098";margin-left:4px;-webkit-animation:rotating 1.2s linear infinite;-moz-animation:rotating 1.2s linear infinite;-ms-animation:rotating 1.2s linear infinite;-o-animation:rotating 1.2s linear infinite;animation:rotating 1.2s linear infinite}.mec-single-event .mec-events-meta-group-booking button[type=submit].loading:after,.mec-single-event a.button.loading:after{display:inline-block}.mec-single-event .mec-event-export-module{display:block}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul{display:table;width:100%}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li{display:table-cell}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li:last-child{text-align:right}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li a:hover{color:#fff}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul{padding-left:0;margin:15px 5px}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting{padding-left:0;margin:0}.mec-ticket-price{margin-left:10px;font-size:13px;font-weight:300}.mec-book-reg-field-checkbox label,.mec-book-reg-field-radio label{line-height:1.36}.mec-book-reg-field-checkbox input[type=checkbox],.mec-book-reg-field-radio input[type=radio]{float:left;margin-right:5px!important}.mec-ticket-available-spots .mec-event-ticket-description,.mec-ticket-available-spots .mec-event-ticket-price{font-size:11px}.mec-book-ticket-container .mec-reg-mandatory:nth-child(2) label:after,.mec-book-ticket-container .mec-reg-mandatory:nth-child(3) label:after,.mec-book-ticket-container .wbmec-mandatory{content:"";color:red;width:50px;height:50px;font-size:14px;padding-left:5px}@media only screen and (max-width:767px){.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li{width:100%;min-height:40px;margin-bottom:15px;text-align:center;float:none;display:block}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li a{width:100%;padding-left:0;padding-right:0;text-align:center;display:block;font-size:12px}}.mec-single-event .mec-events-meta-group{margin-bottom:0}@media only screen and (max-width:767px){.mec-single-event .mec-events-meta-group-booking{margin-bottom:30px}}.mec-single-event .mec-event-meta dt,.mec-single-event .mec-event-meta h3{text-transform:uppercase;font-size:16px;font-weight:700;padding-bottom:5px;display:inline;color:#000;padding-left:10px}.mec-single-event .mec-event-meta h6{text-transform:uppercase;font-size:13px;padding-bottom:5px;display:inline;color:#222;padding-left:0}.mec-single-event .mec-event-meta .mec-events-event-categories a,.mec-single-event .mec-event-meta dd{font-size:14px;color:#8d8d8d}.mec-single-event .mec-event-meta .mec-location dd.author{color:#3c3b3b}.mec-single-event .mec-event-meta dd{margin:0;padding-left:35px}.mec-single-event .mec-event-meta dd.mec-events-event-categories{min-height:35px;line-height:35px}.mec-single-event .mec-event-meta dd.mec-events-event-categories:first-of-type{padding-top:5px}.mec-single-event .mec-event-meta dd.mec-events-event-categories:last-of-type{border-bottom:0}.mec-single-event .mec-event-meta dd a{color:#8d8d8d;transition:all .2s ease}.mec-single-event .mec-event-meta dd a i:before{font-size:16px!important}.mec-single-event .mec-event-meta dd a i{vertical-align:top;margin-right:8px}.mec-single-event .mec-event-meta dl{margin-bottom:0}.mec-single-event .mec-event-meta .mec-events-event-cost{font-size:18px}.mec-single-event .mec-event-meta .mec-events-address{color:#a9a9a9;margin-bottom:3px}.mec-single-event .mec-event-meta .mec-events-meta-group-venue .author{margin-bottom:0;color:#8d8d8d;font-size:13px}.mec-single-event .mec-events-event-image{margin-bottom:0}.mec-single-event h2.mec-single-event-title{margin-bottom:30px;font-weight:700;font-size:33px}.mec-single-event .mec-booking-button{border-bottom:none;letter-spacing:.5px;line-height:48px;height:76px;transition:all .5s ease;color:#fff;padding:16px;display:block;text-align:center;font-size:16px}.mec-single-event .mec-booking-button:hover{background-color:#101010!important}.mec-single-event .mec-event-tags a{display:inline-block;color:#444;font-size:11px;text-transform:uppercase;letter-spacing:1.5px;font-weight:500;padding:3px 7px;border:1px solid #ddd;border-radius:2px;background:#fff;margin:1px 3px}.mec-single-event .mec-event-tags:before{font-size:24px;color:#303030;margin-right:5px;content:"\f02c";font-family:fontawesome}.mec-single-event .mec-event-tags{padding-top:13px}.mec-single-event .mec-event-sharing{margin:30px 0 10px}.mec-region.mec-events-abbr,.mec-single-event .mec-street-address{font-style:normal;font-size:13px}.mec-events-meta-group.mec-events-meta-group-venue:before,.mec-single-event-date:before,.mec-single-event-time:before{color:#40d9f1}.mec-single-event .mec-event-social{text-align:center}.mec-single-event .mec-event-social h3{text-transform:uppercase;font-size:15px;font-weight:700;padding-bottom:5px;color:#313131;border-bottom:4px solid #ebebeb;width:100%;display:block;padding-bottom:10px;position:relative}.mec-single-event .mec-social-single:before{padding:13px 35px;border-bottom:4px solid #40d9f1;font-size:6px;content:"";text-align:center;position:absolute;bottom:-4px;margin-left:39px}.mec-single-event .mec-event-social .event-sharing{margin-top:30px}.mec-single-event .mec-event-social ul{list-style:none;margin-left:0}.mec-single-event .mec-event-social li.mec-event-social-icon{display:inline-block}.mec-single-event .mec-event-social li.mec-event-social-icon a{display:inline-block;color:#fff;width:40px;height:40px;padding:9px;font-size:16px;margin-right:5px}.mec-single-event .mec-event-social a.facebook{background:#3b5996}.mec-single-event .mec-event-social a.facebook:hover{background:#28385c}.mec-single-event .mec-event-social a.twitter{background:#00acee}.mec-single-event .mec-event-social a.twitter:hover{background:#0087bd}.mec-single-event .mec-event-social a.vimeo{background:#0dadd6}.mec-single-event .mec-event-social a.vimeo:hover{background:#0a85a3}.mec-single-event .mec-event-social a.dribble{background:#d53e68}.mec-single-event .mec-event-social a.dribble:hover{background:#bf4c78}.mec-single-event .mec-event-social a.youtube{background:#cb322c}.mec-single-event .mec-event-social a.youtube:hover{background:#992622}.mec-single-event .mec-event-social a.pinterest{background:#cb2027}.mec-single-event .mec-event-social a.pinterest:hover{background:#99181d}.mec-single-event .mec-event-social a.google{background:#c3391c}.mec-single-event .mec-event-social a.google:hover{background:#99181f}.mec-single-event .mec-event-social a.linkedin{background:#0073b2}.mec-single-event .mec-event-social a.linkedin:hover{background:#005380}.mec-single-event .mec-event-social a.email{background:#ff5d5e}.mec-single-event .mec-event-social a.email:hover{background:#cc4949}.mec-single-event .mec-event-social a.vk{background:#5b88bd}.mec-single-event .mec-event-social a.vk:hover{background:#3d608a}.mec-single-event .mec-event-social a.rss{background:#f29a1d}.mec-single-event .mec-event-social a.rss:hover{background:#cc7400}.mec-single-event .mec-event-social a.instagram{background:#457399}.mec-single-event .mec-event-social a.instagram:hover{background:#2e4d66}.mec-single-event .mec-event-social a.other-social{background:#ff5d5e}.mec-single-event .mec-event-social a.other-social:hover{background:#cc4949}.mec-single-event .mec-event-social{text-align:center}.mec-single-event .mec-events-meta-group-booking form>h4,.mec-single-event .mec-frontbox-title{text-transform:uppercase;font-size:15px;font-weight:700;color:#313131;border-bottom:4px solid #ebebeb;width:100%;display:block;padding-bottom:10px;position:relative;text-align:center}.mec-single-event .mec-events-meta-group-booking form>h4:before,.mec-single-event .mec-frontbox-title:before{padding:1px 35px;border-bottom:4px solid #40d9f1;font-size:6px;content:"";text-align:center;position:absolute;bottom:-4px;margin-left:-35px;left:50%}.mec-single-event .mec-events-meta-group-booking input[data-stripe=exp-month],.mec-single-event .mec-events-meta-group-booking input[data-stripe=exp-year]{width:47%!important;margin-right:12px;margin-top:5px;display:inline-block!important}@media(max-width:768px){.mec-single-event .mec-events-meta-group-booking input[data-stripe=exp-month],.mec-single-event .mec-events-meta-group-booking input[data-stripe=exp-year]{width:100%!important;margin-right:0;display:block!important}}.mec-event-meta i:before{font-size:20px;vertical-align:middle}.mec-event-meta .mec-single-event-additional-organizers i:before,.mec-event-meta .mec-single-event-organizer i:before{font-size:14px;vertical-align:baseline}#mec-wrap .mec-events-day-time-slot .mec-events-content{float:left;width:33%;padding:0 15px}#mec-wrap .mec-events-day-time-slot .mec-events-event-image{padding-left:0}#mec-events-content .mec-events-abbr{color:#8d8d8d;font-size:14px}.mec-single-event .mec-events-content{margin-bottom:30px}.mec-single-event .mec-organizer-url a{word-wrap:break-word}.mec-single-event #headline{margin:0 0 10px}.mec-single-event #headline h2{padding:0}.mec-single-event .mec-events-meta-group.mec-events-meta-group-gmap .mec-events-venue-map{margin-top:0;padding:8px;border:1px solid #e5e5e5;border-radius:7px}#mec-events-gmap-0{height:325px!important}.mec-events-list .mec-events-day-time-slot .mec-events-event-meta{width:33%;float:left;padding:40px;height:auto;margin:0}.mec-events-day-time-slot .mec-events-content.description.entry-summary{font-size:15px;font-weight:300;color:#8d8d8d}.mec-events-day-time-slot .type-mec_events h2{font-size:28px;padding-bottom:20px}.mec-events-day .mec-events-day-time-slot .type-mec_events{margin:0}.mec-events-day .mec-events-day-time-slot h5{background-color:#8d8d8d}.mec-single-event .mec-event-meta .mec-single-event-additional-organizers .mec-events-single-section-title,.mec-single-event .mec-event-meta .mec-single-event-organizer .mec-events-single-section-title,.mec-single-event .mec-events-meta-date h3{padding-left:0;margin:10px;display:inline-block}.mec-single-event .mec-events-meta-date h3{width:100%}.mec-single-event .mec-events-event-image{border:0}.mec-single-event .mec-events-venue-map{padding:0}.mec-event-cost,.mec-event-more-info,.mec-event-website,.mec-events-meta-date,.mec-single-event-additional-organizers,.mec-single-event-category,.mec-single-event-date,.mec-single-event-label,.mec-single-event-location,.mec-single-event-organizer,.mec-single-event-time{background:#f7f7f7;padding:12px 14px 8px;margin-bottom:12px;vertical-align:baseline;position:relative}.mec-single-event .mec-events-meta-date dd,.mec-single-event .mec-single-event-additional-organizers dd,.mec-single-event .mec-single-event-organizer dd{padding-left:0;margin-bottom:10px}.mec-single-event .mec-events-meta-date dd span,.mec-single-event .mec-single-event-additional-organizers dd span,.mec-single-event .mec-single-event-organizer dd span{display:block;padding-left:12px;color:#8d8d8d}.mec-single-event .mec-events-meta-date i,.mec-single-event .mec-single-event-additional-organizers i,.mec-single-event .mec-single-event-organizer i{margin-right:10px;margin-left:12px}.mec-events-meta-group.mec-events-meta-group-venue dl{margin-bottom:0}address.mec-events-address{line-height:19px;font-style:normal;font-size:12px}.mec-single-event .mec-event-content dt{margin-top:5px}.mec-single-event .mec-single-event-additional-organizers .mec-single-event-additional-organizer{margin-bottom:15px;padding-bottom:5px;border-bottom:1px solid #e4e4e4}.mec-single-event .mec-single-event-additional-organizers .mec-single-event-additional-organizer:last-child{margin-bottom:0;padding-bottom:0;border:none}.mec-event-schedule-content{border-left:4px solid #f0f0f0;padding-top:10px;margin-top:30px;margin-left:25px;margin-bottom:20px;color:#8a8a8a}.mec-event-schedule-content dl{padding-left:24px;font-size:12px;position:relative;margin-bottom:35px}.mec-event-schedule-content dl:before{content:'';display:block;position:absolute;left:0;top:4px;width:20px;height:0;border-top:4px solid #f0f0f0}.mec-event-schedule-content dl dt{margin:0 0 10px;line-height:1.16}.mec-event-schedule-content dl dt.mec-schedule-title{font-size:13px;color:#5a5a5a;font-weight:700}.mec-event-schedule-content dl dt.mec-schedule-description{font-weight:300}.mec-event-schedule-content .mec-schedule-speakers{background:#f7f7f7;padding:10px}.mec-wrap .mec-event-schedule-content h6{font-size:13px;color:#5a5a5a;font-weight:700;display:inline-block}.mec-wrap .mec-event-schedule-content a{font-weight:400;color:#5a5a5a;transition:all .1s ease}.mec-single-event .mec-speakers-details ul li{list-style:none;background:#f7f7f7;padding:5px 5px 18px 5px;margin-top:14px}.mec-single-event .mec-speakers-details ul li a{-webkit-transition:.2s all ease;transition:.2s all ease}.mec-single-event .mec-speakers-details ul li .mec-speaker-avatar a img{float:left;border-radius:50%;transition:.2s all ease;border:2px solid transparent;width:68px;height:68px}.mec-single-event .mec-speakers-details ul li .mec-speaker-avatar a:hover img{border-color:#40d9f1}.mec-single-event .mec-speakers-details ul li .mec-speaker-name{display:inline-block;margin-top:6px;font-size:14px;text-transform:capitalize;font-weight:700;padding-left:8px}.mec-single-event .mec-speakers-details ul li .mec-speaker-job-title{display:block;font-size:12px;margin-top:-1px;padding-left:75px}.mec-single-event-location img,.mec-single-event-organizer img{margin-bottom:10px;width:100%}.mec-qrcode-details{text-align:center}.mec-time-comment{font-size:11px}.mec-wrap .mec-attendees-list-details p{font-weight:300;margin:20px 0 0 0;color:#8d8d8d}.mec-wrap .mec-attendees-list-details li{list-style:none;display:block;margin-top:15px}.mec-wrap .mec-attendees-list-details li .mec-attendee-avatar{display:inline-block}.mec-wrap .mec-attendees-list-details li .mec-attendee-profile-link{display:inline-block;vertical-align:top;margin-left:10px}.mec-attendees-list-details ul{margin-bottom:0}.mec-attendees-list-details .mec-attendee-profile-link a{color:#8d8d8d}.mec-attendees-list-details .mec-attendee-profile-link span{display:block;color:#000}.mec-calendar{margin-bottom:20px;border:1px solid #e8e8e8;width:100%;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-calendar .mec-calendar-topsec{display:table;background:#fff}.mec-calendar .mec-calendar-topsec .mec-calendar-events-sec{display:none}.mec-calendar .mec-calendar-side{width:590px;display:table-cell;padding:40px;position:relative;text-align:center;box-shadow:0 1px 5px 6px rgba(0,0,0,.005) inset}.mec-calendar .mec-calendar-events-side{display:table-cell;height:100%;border-left:1px solid #efefef;padding:40px;width:100%}.mec-calendar .mec-calendar-events-side .mec-table-side-day{width:46px;height:46px;margin:0 auto 20px;position:relative;text-align:center;line-height:46px;border:1px solid #40d9f1;border-radius:50%;font-size:12px;font-weight:600;padding:0}.mec-calendar .mec-calendar-events-side .mec-table-side-title{text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:3px;margin-bottom:14px}.mec-calendar .mec-calendar-header{position:relative;width:560px;margin-top:8px;margin-bottom:16px}.mec-calendar .mec-calendar-header h2{text-transform:uppercase;font-size:22px;font-weight:700;color:#333}.mec-calendar .mec-event-footer{width:auto;min-height:60px}.mec-calendar dl{display:table;margin:0;border:none;padding:0;table-layout:fixed}.mec-calendar dt{display:table-cell;transition:all .66s ease;color:#4d4d4d;background:#fff;border-radius:44px;font-size:14px;width:80px;height:80px;line-height:80px;text-align:center}.mec-calendar .mec-calendar-table .mec-no-event{display:none}.mec-calendar .mec-calendar-table-head dt{font-weight:700;text-transform:uppercase;font-size:15px}.mec-calendar .mec-calendar-row dt:hover{background:#f4f4f4}.mec-calendar .mec-table-nullday{color:#cacaca}.mec-calendar.mec-box-calendar .mec-table-nullday:last-child{border-right:1px solid #eaeaea}.mec-calendar .mec-next-month:hover,.mec-calendar .mec-prev-month:hover{background:#f4f4f4}.mec-calendar .mec-selected-day,.mec-calendar .mec-selected-day:hover{background:#40d9f1;color:#fff}.mec-calendar .mec-selected-day a{color:#fff}.mec-calendar .mec-has-event{position:relative}.mec-calendar .mec-calendar-row dt.mec-has-event:hover{background:#40d9f1}.mec-calendar .mec-has-event a{cursor:pointer;display:block;width:100%;height:100%;border-radius:50%;color:#4d4d4d;transition:all .25s ease;text-decoration:none;box-shadow:none}.mec-calendar .mec-calendar-row dt.mec-has-event.mec-selected-day a,.mec-calendar .mec-calendar-row dt.mec-has-event:hover a{color:#fff}.mec-calendar .mec-has-event:after{background-color:#40d9f1;border-radius:50%;display:block;content:'';width:8px;height:8px;bottom:14px;left:50%;margin:-4px 0 0 -4px;position:absolute;transition:all .25s ease}.mec-calendar .mec-calendar-row dt.mec-has-event:hover:after{background-color:#fff}.mec-calendar .mec-has-event.mec-selected-day:after{display:none}.mec-calendar .mec-event-article{text-align:left;margin-bottom:0;padding-bottom:25px;padding-top:26px;border-top:1px solid #efefef;transition:all .33s ease}.mec-calendar .mec-event-article:hover{background-color:#fafafa}.mec-calendar .mec-event-article .mec-event-time{font-size:11px;line-height:1.1;margin:0}.mec-calendar .mec-event-article .mec-event-title{font-size:13px;padding:0;margin:10px 0 8px;font-weight:700;text-transform:uppercase}.mec-calendar .mec-event-article .mec-event-title a{text-decoration:none;color:#494949;transition:color .3s ease}.mec-calendar .mec-event-article .mec-event-title a:hover{color:#40d9f1}.mec-calendar .mec-event-article .mec-event-image,.mec-calendar .mec-event-list-classic .mec-event-image img{width:65px;height:auto}.mec-calendar .mec-event-article .mec-event-image{float:left;margin-right:20px;width:65px;height:auto}.mec-calendar .mec-event-article .mec-event-detail{font-size:13px;line-height:1.3;font-family:Roboto,sans-serif;color:#9a9a9a;margin-bottom:0}.mec-calendar .mec-calendar-side .mec-next-month,.mec-calendar .mec-calendar-side .mec-previous-month{cursor:pointer;position:absolute;top:0;min-width:50px;height:50px;line-height:50px;text-align:center;background:#fff;color:#a9a9a9;font-size:12px;letter-spacing:1px;text-transform:uppercase;padding-left:10px;padding-right:10px;border:1px solid #efefef;border-top:none;box-shadow:0 2px 0 0 rgba(0,0,0,.015);transition:all .33s ease}.mec-calendar .mec-calendar-side .mec-next-month i,.mec-calendar .mec-calendar-side .mec-previous-month i{font-size:12px;color:#40d9f1;cursor:pointer}.mec-calendar .mec-calendar-side .mec-next-month:hover,.mec-calendar .mec-calendar-side .mec-previous-month:hover{background-color:#f9f9f9;color:#40d9f1}.mec-calendar .mec-calendar-side .mec-previous-month{left:0;border-bottom-right-radius:6px;border-left:none}.mec-calendar .mec-calendar-side .mec-next-month{right:0;border-bottom-left-radius:6px;border-right:none}@media only screen and (min-width:961px){.mec-wrap.mec-sm959 .mec-calendar:not(.mec-event-calendar-classic):not(.mec-calendar-weekly) .mec-has-event:after{width:6px;height:6px;bottom:6px}.mec-wrap.mec-sm959 .mec-calendar:not(.mec-event-calendar-classic):not(.mec-calendar-weekly) .mec-calendar-side{width:370px}.mec-wrap.mec-sm959 .mec-calendar:not(.mec-event-calendar-classic):not(.mec-calendar-weekly) .mec-calendar-header{position:relative;width:350px;margin-top:30px;margin-bottom:20px;padding-top:20px}.mec-wrap.mec-sm959 .mec-calendar:not(.mec-event-calendar-classic):not(.mec-calendar-weekly) dt{width:50px;height:50px;line-height:50px}.mec-wrap.mec-sm959 .mec-calendar.mec-event-calendar-classic dl dt{height:110px}}@media only screen and (max-width:1200px){.mec-calendar .mec-has-event:after{width:6px;height:6px;bottom:6px}.mec-calendar .mec-calendar-side{width:370px}.mec-calendar .mec-calendar-header{position:relative;width:350px;margin-top:30px}.mec-calendar dt{width:50px;height:50px;line-height:50px}}@media only screen and (max-width:767px){.mec-calendar .mec-calendar-header h2{font-size:18px}.mec-calendar .mec-calendar-topsec{width:100%}.mec-calendar .mec-calendar-side{width:100%;display:block;padding:30px}.mec-calendar .mec-calendar-header{width:auto}.mec-calendar .mec-calendar-events-side{width:100%;display:block;height:100%;border-left:none;border-top:1px solid #efefef;padding:20px}.mec-calendar dl{width:100%}.mec-calendar dt{width:14%;height:60px;line-height:60px;border-radius:50px}}@media only screen and (max-width:479px){.mec-calendar .mec-has-event:after{width:4px;height:4px}.mec-calendar .mec-calendar-header h2{font-size:16px;margin-top:33px}.mec-calendar dt{height:38px;line-height:38px}.mec-calendar .mec-event-list-classic .mec-event-detail,.mec-calendar .mec-event-list-classic .mec-event-title{font-size:12px}.mec-calendar .mec-event-list-classic .mec-event-time{font-size:10px}}.mec-box-calendar.mec-calendar .mec-has-event a,.mec-box-calendar.mec-calendar dt{border-radius:0}.mec-box-calendar.mec-calendar .mec-calendar-header{margin-top:2px;margin-bottom:30px}.mec-box-calendar.mec-calendar dt{border-bottom:1px solid #eaeaea;border-left:1px solid #eaeaea}.mec-box-calendar.mec-calendar dl dt:last-child{border-right:1px solid #eaeaea}.mec-box-calendar.mec-calendar .mec-calendar-table-head dt{border-top:1px solid #eaeaea;background-color:#f8f8f8}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-table-head dt{background-color:#f4f4f4}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month,.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{border-radius:2px;top:40px;border:1px solid #eee;height:30px;line-height:30px;z-index:1}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{left:60px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month{right:60px}.mec-box-calendar.mec-calendar .mec-calendar-side{box-shadow:none}.mec-box-calendar.mec-calendar .mec-calendar-events-side{border:none}.mec-box-calendar.mec-calendar .mec-calendar-events-side .mec-table-side-day{border-radius:2px}.mec-box-calendar.mec-calendar h4.mec-month-label{position:relative;width:560px;margin-top:2px;margin-bottom:30px;text-transform:uppercase;font-size:22px;font-weight:700;color:#333}.mec-widget .mec-box-calendar.mec-calendar h4.mec-month-label{width:100%;margin-top:8px;font-size:13px}@media only screen and (max-width:1200px){.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{left:42px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month{right:42px}.mec-calendar .mec-calendar-header h2{font-size:17px;margin-top:7px}}@media only screen and (max-width:767px){.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month,.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{top:28px;font-size:10px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{left:30px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month{right:30px}.mec-calendar .mec-calendar-header h2{font-size:15px}}@media only screen and (max-width:479px){.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month,.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{top:16px;font-size:0;padding:4px 0;text-align:center;min-width:33px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{left:10px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month{right:10px}.mec-box-calendar.mec-calendar .mec-calendar-header h2{font-size:12px;margin-top:15px}.mec-box-calendar.mec-calendar .mec-event-image{margin-right:12px}}.mec-calendar.mec-event-calendar-classic,.mec-calendar.mec-event-calendar-classic .mec-calendar-side{border:none;padding:0;width:100%;height:100%;box-shadow:none}.mec-calendar.mec-event-calendar-classic .mec-calendar-side{display:block}.mec-calendar.mec-event-calendar-classic .mec-calendar-header,.mec-calendar.mec-event-calendar-classic dl{width:100%}.mec-calendar.mec-event-calendar-classic dl dt{width:15%;height:136px;line-height:1.2;text-align:left;padding:5px 7px;position:relative}.mec-calendar.mec-event-calendar-classic .mec-calendar-table-head dt{height:30px!important}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-side .mec-next-month,.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-side .mec-previous-month{top:0}.mec-calendar.mec-event-calendar-classic .mec-has-event:after{bottom:auto;top:24px;left:7px;margin:0}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-side .mec-previous-month{left:0}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-side .mec-next-month{right:0}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec{text-align:left;background:#fafafa;border:1px solid #eaeaea;border-top:none;padding:10px 20px}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec{display:none}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-event-article:hover{background-color:#fcfcfc}.mec-calendar.mec-event-calendar-classic .mec-selected-day,.mec-calendar.mec-event-calendar-classic dt.mec-selected-day:hover{color:#40d9f1;font-weight:700;background:#fafafa;border-bottom:none}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-table-side-day,.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-table-side-title{display:inline-block;margin:0;margin-bottom:15px;font-weight:700}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-table-side-day{margin-left:4px}.mec-calendar.mec-event-calendar-classic .mec-calendar-row dt.mec-has-event a{color:#4d4d4d}.mec-calendar.mec-event-calendar-classic .mec-calendar-row dt.mec-has-event:not(.mec-selected-day):hover a{color:#fff}@media only screen and (max-width:1200px){.mec-calendar.mec-event-calendar-classic dl dt{height:100px}}@media only screen and (max-width:767px){.mec-calendar.mec-event-calendar-classic dl dt{height:40px}}@media only screen and (max-width:479px){.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec{padding:10px}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-header h2{font-size:13px;margin-top:8px}}.mec-calendar .mec-event-article.mec-single-event-novel{padding:4px 8px;min-height:25px;margin:0 -4px;border-radius:0}.mec-calendar .mec-event-article.mec-single-event-novel h4{margin:0;font-size:10px;line-height:18px}.mec-calendar.mec-event-container-novel dl dt{padding:3px}.mec-calendar.mec-event-calendar-classic .mec-calendar-novel-selected-day{display:inline-block;padding:4px;margin-left:1px}.mec-calendar.mec-event-calendar-classic .mec-selected-day .mec-calendar-novel-selected-day{color:#fff}.mec-calendar.mec-event-calendar-classic.mec-event-container-novel .mec-selected-day,.mec-calendar.mec-event-calendar-classic.mec-event-container-novel dt.mec-selected-day:hover{border-bottom:1px solid #eaeaea}.mec-calendar.mec-event-calendar-classic.mec-event-container-novel .mec-calendar-side .mec-calendar-table{min-height:auto}.mec-single-event-novel.light h4{color:#000!important}.mec-single-event-novel.dark h4{color:#fff!important}@media only screen and (max-width:768px){.mec-calendar .mec-event-article.mec-single-event-novel{padding:0;min-height:5px}.mec-calendar .mec-event-article.mec-single-event-novel h4{display:block;font-size:9px}}.mec-event-container-simple .event-single-content-simple{display:none}.mec-event-calendar-classic.mec-event-container-simple .mec-calendar-side .mec-calendar-table{min-height:unset}.mec-event-container-simple .mec-monthly-tooltip h4{font-size:13px;font-weight:500;margin:0;color:#444}.mec-event-container-simple .mec-monthly-tooltip h4:hover{text-decoration:underline;color:#111}.mec-event-container-simple .mec-monthly-tooltip.event-single-link-simple{border-bottom:1px dashed #e3e3e3;padding:10px 2px;display:block}.mec-calendar.mec-event-container-simple dl dt.mec-calendar-day{font-size:30px;color:#000}.mec-calendar.mec-event-container-simple .mec-calendar-row dt:hover{background:unset}.mec-calendar.mec-event-container-simple .mec-calendar-row dt,.mec-calendar.mec-event-container-simple .mec-calendar-row dt:last-child,.mec-calendar.mec-event-container-simple .mec-calendar-table-head dt,.mec-calendar.mec-event-container-simple .mec-calendar-table-head dt:last-child{border-width:2px}.mec-calendar.mec-event-container-simple dl dt.mec-selected-day,.mec-calendar.mec-event-container-simple dl dt.mec-selected-day:hover{border-bottom:2px solid #40d9f1;background:unset}.mec-calendar.mec-event-container-simple .mec-calendar-table-head dt{line-height:36px}@media (max-width:768px){.mec-calendar.mec-event-container-simple{overflow-x:scroll}.mec-calendar.mec-event-container-simple .mec-calendar-side{min-width:700px}.mec-event-container-simple .mec-monthly-tooltip h4{font-size:12px}}.mec-wrap.colorskin-custom .mec-calendar.mec-event-container-simple .mec-selected-day:hover{background:#f4f4f4}.mec-event-container-simple .mec-calendar-day .mec-monthly-tooltip.event-single-link-simple:last-of-type{border:none}.mec-tooltip-event-title{font-size:16px;font-weight:700;color:#000;margin-bottom:2px}.mec-tooltip-event-time{font-size:12px;color:#888;margin-bottom:8px;margin-top:5px}.tooltipster-sidetip.tooltipster-shadow .tooltipster-content{padding:17px}.mec-tooltip-event-content{clear:both}.mec-tooltip-event-featured{float:left;margin-right:13px;margin-bottom:1px}.mec-tooltip-event-featured img{max-width:120px}.mec-tooltip-event-desc{font-size:14px;color:#444;line-height:18px}.mec-tooltip-event-desc p{font-size:13px;line-height:1.4;margin-bottom:10px}.tooltipster-sidetip.tooltipster-shadow .tooltipster-box{border-radius:3px!important;border:1px solid #e2e3e4!important;background:#fff!important;box-shadow:0 -1px 30px -2px rgba(0,0,0,.15)!important}.tooltipster-sidetip .tooltipster-arrow{overflow:visible!important}.tooltipster-sidetip.tooltipster-shadow .tooltipster-arrow-border{border-width:12px!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-right .tooltipster-arrow-border{border-right-color:#e2e3e4!important}.tooltipster-sidetip .tooltipster-arrow-border{left:-12px!important;z-index:9999999999!important}.tooltipster-sidetip.tooltipster-shadow .tooltipster-arrow-background{display:block!important}.tooltipster-sidetip .tooltipster-arrow-background{border-width:11px!important;z-index:99999999999!important}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background{left:-9px!important;top:1px!important;border-right-color:#fff!important}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{border-top-color:#fff!important;left:0!important;top:-1px!important}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border{left:-1px!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-top .tooltipster-arrow-border{border-top-color:#e2e3e4!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-bottom .tooltipster-arrow-border{left:-1px!important;top:-11px!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#e2e3e4!important}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background{top:-9px!important;border-bottom-color:#fff!important}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background{border-left-color:#fff!important;left:-2px!important;top:0!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-left .tooltipster-arrow-border{border-left-color:#e2e3e4!important;left:-1px!important;top:-1px!important}@media (max-width:780px){.mec-event-container-simple .mec-monthly-tooltip.event-single-link-simple h4{word-break:break-all;font-size:13px}}@media (max-width:320px){.mec-event-container-simple .mec-monthly-tooltip.event-single-link-simple h4{font-size:10px}}.mec-calendar.mec-calendar-daily .mec-calendar-day-events .mec-event-article{padding-left:15px;padding-right:15px}.mec-calendar.mec-calendar-daily .mec-calendar-a-month{text-align:center;background-color:#fff;border-bottom:2px solid #f4f4f4;position:relative}.mec-calendar.mec-calendar-daily .mec-calendar-a-month h4{color:#444;font-size:18px;line-height:1.2;padding:15px 0 11px;margin:0;font-weight:700;letter-spacing:1px;text-transform:uppercase;border-bottom:1px solid #e6e6e6}.mec-calendar.mec-calendar-daily .mec-calendar-d-top{text-align:center;padding:10px 0;position:relative;background-color:#fafafa}.mec-calendar.mec-calendar-daily .mec-next-month,.mec-calendar.mec-calendar-daily .mec-previous-month{position:absolute;top:50%;left:50%;margin-top:-25px;min-width:50px;height:50px;line-height:50px;text-align:center;background:#fff;border:1px solid #e2e2e2;border-radius:50px;box-shadow:0 2px 0 0 rgba(0,0,0,.015);transition:all .33s ease;cursor:pointer}.mec-calendar.mec-calendar-daily .mec-next-month i,.mec-calendar.mec-calendar-daily .mec-previous-month i{font-size:14px;cursor:pointer}.mec-calendar.mec-calendar-daily .mec-next-month:hover,.mec-calendar.mec-calendar-daily .mec-previous-month:hover{border-color:#d0d0d0;color:#444;box-shadow:0 2px 5px 0 rgba(0,0,0,.075)}.mec-calendar.mec-calendar-daily .mec-previous-month{margin-left:-150px}.mec-calendar.mec-calendar-daily .mec-next-month{margin-left:100px}.mec-calendar.mec-calendar-daily .mec-calendar-a-month .mec-next-month,.mec-calendar.mec-calendar-daily .mec-calendar-a-month .mec-previous-month{min-height:28px;height:28px;line-height:28px;width:28px;margin-top:-14px;border-radius:3px}.mec-calendar.mec-calendar-daily .mec-calendar-d-top h2,.mec-calendar.mec-calendar-daily .mec-calendar-d-top h3{margin-top:9px;color:#b9b9b9;font-family:Roboto,sans-serif;font-size:30px;font-weight:100;text-transform:uppercase;margin-bottom:12px;line-height:1}.mec-calendar.mec-calendar-daily .mec-calendar-d-top h2{font-size:81px;color:#444;margin-bottom:10px;line-height:1.1}.mec-calendar.mec-calendar-daily .mec-calendar-d-table{overflow:hidden;background:#fff;min-height:60px;border-top:1px solid #e6e6e6;border-bottom:2px solid #f3f3f3;padding:0 50px;position:relative}@media only screen and (min-width:479px){.mec-calendar.mec-calendar-daily .mec-calendar-d-table{padding:0 55px}}.mec-calendar.mec-calendar-daily .mec-calendar-d-table dl{width:1310px;display:block}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl{display:none}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl.mec-weekly-view-week-active{display:block}.mec-calendar.mec-calendar-daily .mec-calendar-d-table a,.mec-calendar.mec-calendar-daily .mec-calendar-d-table dl dt{display:block;background:#fff;width:42px;height:60px;line-height:60px;text-align:center;float:left;border-right:1px solid #e6e6e6;border-bottom:1px solid #e6e6e6;border-radius:0}.mec-calendar.mec-calendar-daily .mec-calendar-d-table .mec-daily-view-day:hover,.mec-calendar.mec-calendar-daily .mec-calendar-d-table dl dt:hover{background:#fafafa;box-shadow:0 2px 5px 0 rgba(0,0,0,.065) inset;cursor:pointer}.mec-calendar.mec-calendar-daily .mec-calendar-d-table .mec-daily-view-day{cursor:default;background:#fff;color:#c1c1c1;line-height:59px;text-align:center;border-right:1px solid #e6e6e6;border-bottom:1px solid #e6e6e6}.mec-calendar.mec-calendar-daily .mec-calendar-d-table .mec-daily-view-day.mec-has-event{cursor:pointer;font-weight:700;color:#4a4a4a}.mec-calendar.mec-calendar-daily .mec-calendar-d-table .mec-daily-view-day.mec-daily-view-day-active,.mec-calendar.mec-calendar-daily .mec-calendar-d-table dl dt.mec-table-d-current{font-size:18px;font-weight:700;background:#fafafa;color:#40d9f1}.mec-calendar.mec-calendar-daily .mec-calendar-d-table a.mec-table-d-next,.mec-calendar.mec-calendar-daily .mec-calendar-d-table a.mec-table-d-prev{float:none;font-size:14px;width:55px;position:absolute;top:0;left:0;cursor:pointer}.mec-calendar.mec-calendar-daily .mec-calendar-d-table a.mec-table-d-next{left:auto;right:0;border-left:1px solid #e6e6e6;border-right:none}.mec-calendar.mec-calendar-daily .mec-today-container .mec-today-count{font-size:12px;color:#888;text-align:center}@media only screen and (max-width:479px){.mec-calendar.mec-calendar-daily .mec-previous-month{margin-left:-130px}.mec-calendar.mec-calendar-daily .mec-next-month{margin-left:80px}.mec-calendar.mec-calendar-daily .mec-calendar-a-month h4{font-size:14px;letter-spacing:0}}.widget .mec-calendar.mec-calendar-daily .mec-calendar-a-month h4{font-size:14px;letter-spacing:0}.widget .mec-calendar.mec-calendar-daily .mec-previous-month{margin-left:-130px}.widget .mec-calendar.mec-calendar-daily .mec-next-month{margin-left:80px}.mec-util-hidden{display:none}.mec-daily-view-date-events,.mec-weekly-view-date-events{list-style:none;margin:0}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table{padding:0}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl{width:calc(100% - 1px)}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt{width:14.286%;height:70px;line-height:normal;cursor:default}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt:hover{background:#fff;cursor:default}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt:last-child{border-right:none}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt span{font-size:12px;font-weight:700;text-transform:uppercase;display:block;margin:15px 0 6px}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table a.mec-table-d-next,.mec-calendar.mec-calendar-weekly .mec-calendar-d-table a.mec-table-d-prev{display:none}ul.mec-weekly-view-dates-events,ul.mec-weekly-view-dates-events li{padding:0;margin:0;line-height:initial}.mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date{width:64px;height:64px;margin-right:10px;font-size:11px;text-transform:uppercase;float:left;text-align:center;padding-top:2px}.mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date span{font-size:40px;line-height:30px;font-weight:700;display:block;margin-bottom:6px;letter-spacing:1px}.mec-calendar.mec-calendar-weekly .mec-calendar-a-month .mec-previous-month{margin-left:0;left:12px}.mec-calendar.mec-calendar-weekly .mec-calendar-a-month .mec-next-month{margin-left:0;left:auto;right:12px}@media only screen and (max-width:479px){.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt span{font-size:9px;letter-spacing:0}.mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date{width:100%;height:36px;margin-bottom:12px;line-height:1;font-size:10px;margin-right:5px;text-align:left}.mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date span{font-size:18px;margin-bottom:5px}}.widget .mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt span{font-size:9px;letter-spacing:0}.widget .mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date{width:100%;height:36px;margin-bottom:12px;line-height:1;font-size:10px;margin-right:5px;text-align:left}.widget .mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date span{font-size:18px;margin-bottom:5px}.mec-week-events-container .mec-weekly-view-dates-events li.mec-no-event-found{list-style:none!important}li.mec-no-event-found .mec-event-title{text-align:center}.mec-widget .mec-calendar{max-width:100%}.mec-widget .mec-calendar dl dt,.mec-wrap.mec-sm959.mec-widget .mec-calendar.mec-event-calendar-classic dl dt{height:40px}.mec-widget .mec-calendar .mec-calendar-events-sec{padding:10px}.mec-widget .mec-calendar .mec-calendar-header h2{font-size:13px;margin-top:8px}.mec-widget .mec-calendar .mec-event-list-classic .mec-event-image{margin-right:12px}.mec-widget .mec-calendar .mec-has-event:after{width:4px;height:4px}.mec-widget .mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-table-side-title{font-size:14px}.mec-widget .mec-calendar .mec-event-article .mec-event-image{margin-right:11px}.mec-widget .mec-box-calendar.mec-calendar .mec-calendar-header{margin-bottom:20px}.mec-widget .mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month,.mec-widget .mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{font-size:0;padding:4px 0;text-align:center;min-width:33px}.mec-widget .mec-event-calendar-classic .mec-calendar-side .mec-calendar-table{min-height:200px}.mec-widget .mec-event-list-classic{margin-bottom:8px;padding:8px 0}.mec-widget .mec-event-list-classic .mec-event-article{margin-bottom:0;padding:10px 0;position:relative;min-height:86px;padding-left:80px}.mec-widget .mec-event-list-classic .mec-event-date{font-size:10px;line-height:14px;text-transform:uppercase}.mec-widget .mec-event-list-classic .mec-event-title{font-size:13px}.mec-widget .mec-event-list-classic .mec-event-detail{font-size:11px}.mec-widget .mec-event-list-classic .mec-event-image{width:68px;position:absolute;left:0}.mec-event-list-classic .mec-event-image img{width:100%}.mec-widget .mec-event-list-classic .mec-event-detail{overflow:visible}.event-color{width:14px;display:inline-block;height:14px;margin-left:5px;border-radius:50%}.mec-map-lightbox-wp{width:580px;padding:15px 15px 0;background-color:#fff}.mec-map-view-event-detail.mec-event-detail{width:580px;background-color:#e9e9e9;padding:8px 15px}.mec-map-lightbox-wp.mec-event-list-classic .mec-event-article{padding:0 0 15px;margin:0}.mec-map-lightbox-wp.mec-event-list-classic .mec-event-image{width:70px;margin-right:15px}.mec-marker-infowindow-wp{padding:10px}.mec-marker-infowindow-wp .mec-marker-infowindow-count{width:60px;height:60px;display:block;text-align:center;line-height:60px;border:1px solid #40d9f1;border-radius:50%;font-size:32px;color:#40d9f1;float:left;margin-right:11px}.mec-marker-infowindow-wp .mec-marker-infowindow-content{overflow:hidden;padding-top:6px}.mec-marker-infowindow-wp .mec-marker-infowindow-content span{display:block;color:#222}.mec-marker-infowindow-wp .mec-marker-infowindow-content span:first-child{font-size:15px;font-weight:700}.mec-marker-wrap{display:inline-block;width:35px;height:35px;margin:15px 0 0 4px;border-radius:50% 50% 50% 0;background:#00cae9;animation-name:mec-map-bounce;animation-fill-mode:both;animation-duration:1s;border:3px solid #fff;cursor:pointer}.mec-marker-wrap .mec-marker{margin-top:5px;display:block;-webkit-transform:rotate(45deg);transform:rotate(45deg);text-align:center;color:#fff;font-size:17px}.mec-marker-wrap .mec-marker-pulse-wrap{-webkit-transform:rotate(45deg);transform:rotate(45deg);display:inline-block;margin-left:-11px;margin-top:0}.mec-marker-wrap .mec-marker-pulse{display:inline-block;background:#c5c5c5;border-radius:50%;height:14px;width:14px;-webkit-transform:rotateX(55deg);transform:rotateX(55deg);z-index:-2}.mec-marker-wrap .mec-marker-pulse:after{content:"";border-radius:50%;height:40px;width:40px;position:absolute;margin:-13px 0 0 -13px;animation:pulsate 1s ease-out;animation-iteration-count:infinite;opacity:0;box-shadow:0 0 1px 2px #00cae9;animation-delay:1.1s}@keyframes pulsate{0%{transform:scale(.1,.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2,1.2);opacity:0}}@keyframes mec-map-bounce{0%{opacity:0;transform:translateY(-2000px) rotate(-45deg)}60%{opacity:1;transform:translateY(30px) rotate(-45deg)}80%{transform:translateY(-10px) rotate(-45deg)}100%{transform:translateY(0) rotate(-45deg)}}.mec-single-event{margin-top:10px}.mec-single-event .mec-events-meta-group-countdown{color:#c9c9c9;text-align:center;margin-bottom:30px;padding:20px 30px;background:#fff;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-events-meta-group-countdown .countdown-w{text-align:center;font-size:36px;margin:0 auto;padding:40px 0 0;position:relative;display:table;table-layout:fixed}.mec-events-meta-group-countdown .countdown-w .icon-w{font-size:24px}.mec-events-meta-group-countdown .countdown-w .label-w{font-size:15px;font-weight:300;letter-spacing:1px;text-transform:uppercase;position:relative}.mec-events-meta-group-countdown .countdown-w .block-w{display:table-cell;margin:0 20px 10px;position:relative;height:70px;width:190px;font-size:72px;transition:all .3s ease-in-out;line-height:1.2}.mec-events-meta-group-countdown .countdown-w .block-w.done-w{border:0 none}.mec-events-meta-group-countdown .countdown-w span{padding:24px 0 20px}.mec-events-meta-group-countdown .countdown-w .div-d{display:none}.mec-events-meta-group-countdown .countdown-w .countdown-message{display:none}.mec-events-meta-group-countdown .countdown-w .block-w i{display:none}#countdown{list-style:none;margin-bottom:0;margin-top:0;margin-left:0;padding-left:0}.mec-events-meta-group-countdown .mec-end-counts h3{display:inherit;text-align:center;font-size:16px;right:50%}.mec-countdown-details .countdown-w .clockdiv li p{margin-top:23px}@media (min-width:481px) and (max-width:768px){.mec-events-meta-group-countdown .countdown-w{padding:0}.mec-events-meta-group-countdown .countdown-w .label-w{font-size:12px;letter-spacing:0}.mec-events-meta-group-countdown .countdown-w span{font-size:34px}}@media (min-width:320px) and (max-width:480px){.mec-events-meta-group-countdown .countdown-w .label-w{font-size:10px}.mec-events-meta-group-countdown .countdown-w span{font-size:28px}.mec-countdown-details .countdown-w .clockdiv li p{margin-top:16px}}@media (max-width:320px){.mec-events-meta-group-countdown .countdown-w .label-w{font-size:9px;letter-spacing:0}.mec-events-meta-group-countdown .countdown-w span{font-size:22px}}.info-msg,.mec-error,.mec-success,.warning-msg{margin:10px 0;padding:10px;border-radius:3px 3px 3px 3px;font-size:13px}.info-msg{color:#059;background-color:#bef}.mec-success{color:#270;background-color:#dff2bf}.warning-msg{color:#9f6000;background-color:#feefb3}.mec-error{color:#d8000c;background-color:#ffbaba}.mec-fes-list ul{list-style:none}.mec-fes-form-cntt .dashicons-editor-help{display:none}.mec-fes-list ul li *{text-decoration:none!important}.mec-fes-list ul li{border-bottom:1px solid #eee;padding:14px 0;line-height:normal}.mec-fes-list ul li a{box-shadow:none;color:#181818}.mec-fes-list ul li a:hover{color:#40d9f1}.mec-fes-list ul li .mec-event-title{font-weight:600;font-size:15px}.mec-fes-list .mec-event-status{color:#fff!important;border-color:transparent!important}.mec-fes-form .mec-book-confirmed,.mec-fes-list .mec-book-confirmed{background:#50d477!important}.mec-fes-form .mec-book-pending,.mec-fes-list .mec-book-pending{background:#fcbe69!important}.mec-fes-form .mec-book-rejected,.mec-fes-list .mec-book-rejected{background:#fe686a!important}.mec-fes-form .mec-book-other,.mec-fes-list .mec-book-other{background:#40d9f1!important}.mec-fes-list ul li .mec-fes-event-remove,.mec-fes-list ul li .mec-fes-event-view{font-size:11px;padding:4px 8px;border:1px solid #e7e7e7;background:#f7f7f7;float:right;margin-left:5px}.mec-fes-list ul li .mec-fes-event-remove:hover{cursor:pointer;background:#f0b7b8;border-color:#cc4d4f}.mec-fes-list-top-actions a{font-size:11px;letter-spacing:2px;text-transform:uppercase;padding:8px 14px;border:1px solid #e3e3e3;background:#f5f5f5}.mec-fes-form-top-actions a,.mec-fes-list-top-actions a{position:relative;border:none;border-radius:0;color:#fff!important;display:inline-block;font-size:12px;letter-spacing:2px;line-height:1;text-transform:uppercase;font-weight:600;text-decoration:none;cursor:pointer;margin-bottom:21px;margin-right:10px;line-height:1;padding:17px 21px;background:#39c36e;-webkit-transition:all .21s ease;-moz-transition:all .21s ease;transition:all .21s ease}.mec-fes-form-top-actions a:hover,.mec-fes-list-top-actions a:hover{background:#222;color:#fff}.mec-fes-form .mec-form-row,.mec-fes-list .mec-form-row{margin-bottom:20px;clear:both}.mec-fes-form label{padding-right:10px;font-size:13px;display:block}.mec-fes-form .post-status{float:right!important;margin:0 5px;color:#fff;padding:0 10px;border-radius:12px;font-style:italic;font-size:18px}.mec-fes-form input[type=email],.mec-fes-form input[type=number],.mec-fes-form input[type=password],.mec-fes-form input[type=tel],.mec-fes-form input[type=text],.mec-fes-form select,.mec-fes-form textarea{border-radius:0;min-width:inherit;width:auto;display:inline;background:#fcfcfc;min-height:30px;font-size:13px;border:1px solid #e0e0e0;padding:10px;margin-bottom:20px;box-shadow:inset 0 2px 4px rgba(0,0,0,.051);clear:both}#mec_more_info_target{width:100%}@media only screen and (min-width:961px){.mec-fes-form input[type=email],.mec-fes-form input[type=password],.mec-fes-form input[type=text],.mec-fes-form textarea{width:100%;display:inline-block}}@media only screen and (max-width:768px){.mec-fes-form input[type=email],.mec-fes-form input[type=password],.mec-fes-form input[type=text],.mec-fes-form textarea{width:100%}}.mec-fes-form input[type=text]#mec_fes_title{width:100%;height:auto;color:#000;font-size:36px;font-family:Montserrat,Helvetica,Arial,sans-serif;background:0 0!important;font-weight:400}.mec-fes-form input[type=checkbox],.mec-fes-form input[type=radio]{display:inline!important;float:left;margin:5px 5px 0 0}.mec-fes-form input[type=email]:focus,.mec-fes-form input[type=number]:focus,.mec-fes-form input[type=password]:focus,.mec-fes-form input[type=tel]:focus,.mec-fes-form input[type=text]:focus,.mec-fes-form select:focus,.mec-fes-form textarea:focus{border:1px solid #aaa;color:#444;background:#fff;-moz-box-shadow:0 0 3px rgba(0,0,0,.2);-webkit-box-shadow:0 0 3px rgba(0,0,0,.2);box-shadow:0 0 3px rgba(0,0,0,.2);outline:0}.mec-form-row .mec-color{cursor:pointer}.mec-form-row.mec-available-color-row span{margin:10px;width:14px;height:14px;display:inline-block;margin-right:6px;border-radius:20px 20px 20px 20px;vertical-align:middle}.mec-form-row.mec-available-color-row span:first-of-type{margin-left:0}.mec-fes-form.mec-fes-form .mec-tooltip{display:inline}.mec-fes-form-cntt .dashicons-editor-help{display:block}.mec-fes-form .mec-tooltip:hover:after,.mec-fes-form .mec-tooltip:hover:before{display:none}.mec-fes-form.mec-fes-form .mec-tooltip{display:inline-flex;bottom:7px}.mec-fes-form .mec-tooltip .box{min-width:300px;max-width:600px;display:inline-block;left:26px;top:50%;transform:translateY(-50%);padding:0;margin-top:8px;background-color:#535a61;color:#fff;font-weight:300;font-size:14px;letter-spacing:.5px;line-height:1.3;position:absolute;z-index:9999999;box-sizing:border-box;border-radius:6px;box-shadow:0 4px 45px -8px #444b50;visibility:hidden;opacity:0;transition:opacity .23s}#webnus-dashboard .mec-fes-form .mec-tooltip .box p,.mec-fes-form .mec-tooltip .box p{color:#fff;font-size:14px;line-height:1.3;margin:0}.mec-fes-form .mec-tooltip:hover .box{visibility:visible;opacity:1}.mec-fes-form .mec-tooltip:hover .box{padding:20px;border-radius:8px}.mec-fes-form .mec-tooltip .box h5{color:#fff;font-size:17px;font-weight:600;margin:-30px -20px;padding:20px 0;text-align:center;margin-bottom:10px;background:#3a3f44;border-bottom:1px solid #32363a;border-radius:6px 6px 0 0;z-index:9999}#webnus-dashboard .mec-fes-form .mec-tooltip .box p a,.mec-fes-form .mec-tooltip .box p a{color:#40d9f1;margin-top:10px;margin-left:0;font-weight:400;position:relative;text-decoration:none;display:block;width:max-content}.mec-fes-form .mec-tooltip .box a:hover{color:#f90}.mec-fes-form .mec-tooltip .box:after{display:block;position:absolute!important;top:100%!important;right:50%!important;margin-top:-6px!important;margin-right:-6px!important;width:12px!important;height:24px!important;overflow:hidden!important;transform:rotate(-90deg)!important}.mec-fes-form .mec-tooltip .box:before{display:block;content:''!important;position:absolute!important;width:12px;height:12px;left:-10px!important;top:50%!important;transform:translate(50%,-50%) rotate(-45deg)!important;background-color:#535a61!important;box-shadow:0 8px 9px -4px #535a61!important;z-index:0!important}.mec-fes-form .mec-tooltip .box.top{left:50%;top:0;transform:translate(-50%,-100%);margin-top:0;margin-left:-10px}.mec-fes-form .mec-tooltip .box.top:after{top:50%!important;right:100%!important}.mec-fes-form .mec-tooltip .box.top:before{left:50%!important;top:100%!important}.mec-fes-form .mec-tooltip .box.bottom{left:50%;top:auto;bottom:0;transform:translate(-50%,100%);margin-bottom:-20px;margin-left:-10px}.mec-fes-form .mec-tooltip .box.bottom:after{top:0!important;right:50%!important;background-color:#3a3f44!important}.mec-fes-form .mec-tooltip .box.bottom:before{left:50%!important;top:-7px!important;transform:translateX(-50%);background-color:#3a3f44!important}.mec-fes-form .mec-tooltip .box.left{left:auto;right:26px;top:50%;transform:translateY(-50%)}.mec-fes-form .mec-tooltip .box.left:before{right:0!important;left:auto!important;top:50%!important}.mec-fes-form .mec-tooltip{display:inline-block;position:relative;margin-right:10px;cursor:help;bottom:5px;left:3px}.mec-fes-form .mec-tooltip:last-child{margin-right:0}.mec-fes-form .mec-tooltip:hover:after{background:#313130;border-radius:5px;bottom:24px;color:#fff;content:attr(title);left:-75px;padding:10px;position:absolute;z-index:98;width:240px}.mec-fes-form .mec-tooltip:hover:before{border:solid;border-color:#313130 transparent;border-width:6px 6px 0;bottom:18px;content:"";left:30%;position:absolute;z-index:99}.mec-fes-form .mec-tooltip .dashicons-before:before{font-size:24px;color:#008aff;line-height:37px}.mec-fes-form .mec-tooltip a:focus{box-shadow:none}.mec-form-row .bootstrap_unvalid{display:block;border:2px solid red;position:relative;display:inline-block;border-bottom:1px dotted #000}.mec-fes-form .mec-tooltiptext{visibility:hidden;width:120px;background-color:red;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.mec-fes-form .mec-tooltip .content p a{display:none}@media only screen and (min-width:961px){.mec-fes-form .mec-fes-form-cntt,.mec-fes-form .mec-fes-form-sdbr{width:68%;float:left;padding-right:20px}.mec-fes-form .mec-fes-form-sdbr{width:32%;padding-right:0;padding-left:20px}.mec-fes-submit-mobile{display:none}}.mec-fes-form .mec-meta-box-fields{padding:20px;border:1px solid #e6e6e6;margin-bottom:20px;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-fes-form .mec-meta-box-fields h4{margin:-20px;font-size:15px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:10px 20px;background:#f5f5f5;margin-bottom:20px}.mec-fes-sub-button{width:100%}.mec-available-color-row span.color-selected{background-color:#fdd700;border:3px solid #fff;box-sizing:content-box;box-shadow:0 0 0 2px #437df9}.mec-fes-loading:before{content:url(../img/ajax-loader.gif);background:0 0;border-style:none;display:block;margin-left:47%}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row input[type=text]{width:23%;margin-right:1.4%}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row{border-bottom:1px solid #e8e8e8;padding-bottom:15px}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row:last-of-type{border:none}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row input[type=text].mec-col-1{width:10%}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row input[type=text].mec-col-6{width:39%}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row button{margin-right:0;padding:9px 26px}@media only screen and (max-width:768px){.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row input[type=text]{width:100%!important}}.mec-wrap .mec-totalcal-box{position:relative;border:1px solid #efefef;padding:20px 5px;margin:0 0 20px;background:#fafafa;overflow:hidden;box-shadow:0 3px 2px 0 rgba(0,0,0,.012);min-height:78px}.mec-wrap .mec-totalcal-box i{float:left;margin:0;width:36px;height:36px;background:#fff;border:1px solid #efefef;text-align:center;padding:10px 0;font-size:15px;color:#888}.mec-wrap .mec-totalcal-box .mec-totalcal-view span,.mec-wrap .mec-totalcal-box input,.mec-wrap .mec-totalcal-box select{width:auto;min-height:36px;height:36px;line-height:36px;background:#fff;font-size:13px;color:#777;border:1px solid #efefef;margin:0 0 0 -1px;float:left;padding:0 5px;font-family:Roboto,Helvetica,Arial,sans-serif}.mec-wrap .mec-totalcal-box input[type=submit]{cursor:pointer;padding:0 16px;text-transform:uppercase;font-size:11px;font-family:Montserrat,Helvetica,Arial,sans-serif;transition:all .21s ease}.mec-wrap .mec-totalcal-box input[type=submit]:hover{background:#222;color:#fff}.mec-wrap .mec-totalcal-box .mec-totalcal-view span{display:inline-block;text-transform:uppercase;font-family:Montserrat,Helvetica,Arial,sans-serif;font-size:11px;padding:0 12px;cursor:pointer}.mec-wrap .mec-totalcal-box .mec-totalcal-view span:hover{color:#40d9f1}.mec-wrap .mec-totalcal-box .mec-totalcal-view span.mec-totalcalview-selected{color:#fff;background:#40d9f1;border-color:#40d9f1}.mec-wrap .mec-totalcal-box .mec-totalcal-view{text-align:right;float:right}.mec-wrap .mec-totalcal-box input[type=search]{width:calc(100% - 36px)}@media only screen and (min-width:961px) and (max-width:1200px){.mec-wrap .mec-totalcal-box{padding:37px 5px}}@media only screen and (max-width:960px){.mec-wrap .mec-totalcal-box .col-md-3,.mec-wrap .mec-totalcal-box .col-md-4,.mec-wrap .mec-totalcal-box .col-md-5{width:100%;float:none;padding-bottom:20px;clear:both;overflow:hidden}}@media only screen and (min-width:768px) and (max-width:960px){.mec-wrap .mec-totalcal-box .col-md-4{position:relative;right:10px;top:20px;width:initial}.mec-wrap .mec-totalcal-box .col-md-5{padding-bottom:0}.mec-wrap .mec-totalcal-box{padding:37px 5px}}@media only screen and (max-width:767px){.mec-wrap .mec-totalcal-box .mec-totalcal-view{float:none}.mec-wrap .mec-totalcal-box .col-md-4{padding-bottom:0}}@media only screen and (max-width:479px){.mec-wrap .mec-totalcal-box .mec-totalcal-view span{padding:0 8px;font-size:10px}.mec-wrap .mec-totalcal-box input[type=submit]{padding:0 10px;font-size:10px}}@media only screen and (min-width:961px){.mec-wrap .mec-wrap.mec-sm959 .mec-totalcal-box .col-md-5,.mec-wrap.mec-sm959 .mec-totalcal-box .col-md-3{width:100%;float:none;padding-bottom:20px;clear:both;overflow:hidden}.mec-wrap.mec-sm959 .mec-totalcal-box .col-md-4{position:absolute;right:10px;top:20px;width:initial}.mec-wrap.mec-sm959 .mec-totalcal-box .col-md-5{padding-bottom:0;width:100%}}@media (min-width:961px) and (max-width:1200px){.mec-full-calendar-wrap .mec-totalcal-box{padding:20px 20px}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2{width:50%}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2,.mec-full-calendar-wrap .mec-totalcal-box .col-md-3,.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{padding-bottom:20px!important}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2 select{min-width:calc(100% - 36px)}.mec-full-calendar-wrap .mec-totalcal-box .col-md-3 select{min-width:calc(30% - 10px)}.mec-full-calendar-wrap .mec-totalcal-box .col-md-3:last-child select{min-width:calc(50% - 19px)}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view{margin-right:10px}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view span{font-size:10px;text-align:center}}@media (max-width:960px){.mec-full-calendar-wrap .mec-totalcal-box{padding:20px 20px}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2{width:50%}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2,.mec-full-calendar-wrap .mec-totalcal-box .col-md-3,.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{padding-bottom:10px!important}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2 select{min-width:calc(100% - 36px);margin-bottom:10px}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view{margin-right:10px}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view span{font-size:10px;text-align:center}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2{width:100%}.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{position:absolute;top:20px}}@media (min-width:780px) and (max-width:960px){.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{position:absolute;top:20px}}@media(max-width:780px){.mec-full-calendar-wrap .mec-totalcal-box .col-md-3 select{width:calc(50% - 18px)!important}.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{position:unset;padding-right:0}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view span{min-width:20%;text-align:center;font-size:10px}.mec-wrap .mec-totalcal-box .mec-totalcal-view span{padding:0 7px;margin-top:20px}}@media(max-width:480px){.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view span{min-width:20%;text-align:center;font-size:10px}}.mec-search-form{padding:20px 10px}.mec-search-form .mec-dropdown-wrap{display:table;min-height:55px;width:100%}.mec-search-form .mec-date-search,.mec-search-form .mec-dropdown-search,.mec-search-form .mec-text-input-search{padding:0 10px;float:left;min-height:55px}.mec-search-form .mec-date-search,.mec-search-form .mec-text-input-search{width:50%;min-height:36px;display:block}.mec-full-calendar-wrap .mec-search-form .mec-date-search,.mec-full-calendar-wrap .mec-search-form .mec-text-input-search{width:100%}.mec-full-calendar-wrap .mec-search-form .col-md-3,.mec-full-calendar-wrap .mec-search-form .col-md-5,.mec-full-calendar-wrap .mec-search-form .col-md-6,.mec-full-calendar-wrap .mec-search-form .col-md-8{padding:0}.mec-widget .mec-search-form .mec-date-search,.mec-widget .mec-search-form .mec-text-input-search{width:100%}.mec-widget .mec-search-form .mec-text-input-search{margin-top:10px}.mec-search-form .mec-date-search{clear:left}.mec-search-form .mec-dropdown-wrap .mec-dropdown-search{display:table-cell;float:none}.mec-widget .mec-search-form .mec-dropdown-wrap .mec-dropdown-search{display:block}.mec-wrap .mec-search-form .mec-dropdown-wrap .mec-dropdown-search select{width:calc(100% - 36px)}.mec-wrap .mec-search-form .mec-date-search select{width:calc(100% - 106px)}.mec-wrap .mec-search-form .mec-date-search select:last-child{width:70px}@media only screen and (max-width:767px){.mec-search-form .mec-date-search,.mec-search-form .mec-dropdown-search,.mec-search-form .mec-text-input-search{width:100%;float:none}.mec-search-form .mec-date-search{min-height:55px}.mec-search-form .mec-dropdown-wrap .mec-dropdown-search{display:block;width:50%;float:left}}@media only screen and (max-width:960px){.mec-wrap .mec-search-form .mec-date-search select{width:calc(100% - 124px)}.mec-wrap .mec-search-form .mec-date-search select:last-child{width:70px}}@media only screen and (max-width:479px){.mec-search-form .mec-dropdown-wrap .mec-dropdown-search{display:block;width:100%;float:none}}.ui-datepicker{background-color:#fff;border:1px solid #66afe9;border-radius:4px;box-shadow:0 0 8px rgba(102,175,233,.6);display:none;margin-top:4px;padding:10px;width:240px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none;cursor:pointer}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2c6396;-webkit-transition:color .1s ease-in-out;-moz-transition:color .1s ease-in-out;-o-transition:color .1s ease-in-out;transition:color .1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{cursor:default;font-family:dashicons;-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;height:20px;line-height:1.4;margin-top:2px;width:20px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:center}.ui-datepicker .ui-datepicker-prev:before{content:"\f341"}.ui-datepicker .ui-datepicker-next:before{content:"\f345"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar td,.ui-datepicker .ui-datepicker-calendar th{text-align:center;padding:4px 0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color .1s ease-in-out,color .1s ease-in-out;-moz-transition:background-color .1s ease-in-out,color .1s ease-in-out;-o-transition:background-color .1s ease-in-out,color .1s ease-in-out;transition:background-color .1s ease-in-out,color .1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.event-carousel-type1-head .mec-event-image{position:relative;min-height:150px}.event-carousel-type1-head .mec-event-image img{width:100%}.mec-event-carousel-content .mec-event-carousel-title a{transition:all .2s ease}.event-carousel-type1-head .mec-event-date-carousel{position:absolute;top:25px;left:1px;font-size:41px;width:160px;color:#fff;font-weight:500;background-color:#40d9f1;padding-left:21px;height:97px;line-height:2.3;padding-right:85px}.event-carousel-type1-head .mec-event-date-carousel:after{content:"";position:absolute;display:inline-block;z-index:-1;bottom:-13px;left:5px;width:0;border-width:13px;border-style:solid;border-color:transparent transparent #40d9f1 transparent;transform:rotate(45deg)}.event-carousel-type1-head .mec-event-date-info{font-size:12px;font-weight:300;position:absolute;top:27px;left:75px}.event-carousel-type1-head .mec-event-date-info-year{font-size:12px;font-weight:300;position:absolute;top:45px;left:75px}.mec-event-carousel-content{border:1px solid #e8e8e8;border-top:none;margin-top:-5px;padding:34px 9px 11px 37px}.mec-event-carousel-content .mec-event-carousel-title a{font-size:23px;font-weight:500;color:#000;letter-spacing:-1px}.mec-event-carousel-content p{font-size:14px;color:#7a7272;font-weight:300}.mec-owl-crousel-skin-type1 .owl-item .mec-event-article{padding:0 19px}.mec-event-carousel-type1 .owl-page.active span{background-color:#00aeef;height:14px;width:14px}.mec-event-carousel-type1 .mec-event-carousel-content{margin-bottom:15px;box-shadow:0 1px 2px rgba(0,0,0,.04);transition:all .27s ease}.mec-event-carousel-type1 .mec-event-carousel-content:hover{box-shadow:0 0 35px rgba(0,0,0,.07)}@media only screen and (min-width:768px) and (max-width:1000px),(min-width:270px) and (max-width:448px){.event-carousel-type1-head .mec-event-date-carousel{font-size:25px;line-height:2.5;padding-right:70px;height:64px;width:120px}.event-carousel-type1-head .mec-event-date-carousel:after{left:7px}.event-carousel-type1-head .mec-event-date-info{font-size:10px;top:13px;left:55px}.event-carousel-type1-head .mec-event-date-info-year{font-size:10px;top:25px;left:55px}.event-carousel-type1-head .mec-event-date-carousel:after{top:48px}}.event-carousel-type2-head{background:#fff;border:1px solid #e6e6e6}.event-carousel-type2-head .mec-event-carousel-content-type2{margin-top:15px;min-height:182px}.event-carousel-type2-head .mec-event-carousel-content-type2 .mec-event-date-info{font-size:15px;color:#9a9a9a;font-weight:300}.event-carousel-type2-head .mec-event-carousel-content-type2 .mec-event-carousel-title{font-size:26px;font-weight:700;color:#1c1d21;margin-top:15px;letter-spacing:-1px}.mec-event-carousel-content-type2 .mec-event-carousel-title a{color:inherit}.mec-event-carousel-type2 .event-carousel-type2-head .mec-event-carousel-content-type2 p{font-size:16px;font-weight:300;color:#444}.event-carousel-type2-head .mec-event-footer-carousel-type2{margin-top:33px;position:relative}.mec-event-carousel-type2 .mec-event-footer-carousel-type2 .mec-event-sharing-wrap{left:0}.event-carousel-type2-head .mec-event-footer-carousel-type2 .mec-event-sharing-wrap>li{border:none;-webkit-transition:all .25s ease;transition:all .25s ease}.event-carousel-type2-head .mec-event-footer-carousel-type2 .mec-booking-button{border:1px solid #e4e4e4;float:right;padding:7px 23px 7px;font-size:12px;text-transform:uppercase;color:#707070;font-weight:500;-webkit-transition:all .25s ease;transition:all .25s ease}.event-carousel-type2-head .mec-event-footer-carousel-type2 .mec-booking-button:hover{color:#fff}.mec-event-article .event-carousel-type2-head{padding:10%;margin-right:-1px}.mec-event-carousel-type2 .mec-owl-carousel .owl-wrapper-outer{border-right:1px solid #e6e6e6}.mec-wrap .mec-event-carousel-type2 .owl-next,.mec-wrap .mec-event-carousel-type2 .owl-prev,.mec-wrap .mec-event-carousel-type3 .owl-next,.mec-wrap .mec-event-carousel-type3 .owl-prev,.mec-wrap .mec-event-carousel-type4 .owl-next,.mec-wrap .mec-event-carousel-type4 .owl-prev{transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:47%;background-color:transparent!important}.mec-event-carousel-type2 .owl-next{right:-60px}.mec-event-carousel-type2 .owl-prev{left:-60px}.mec-event-carousel-type2 .owl-next i,.mec-event-carousel-type2 .owl-prev i,.mec-event-carousel-type3 .owl-next i,.mec-event-carousel-type3 .owl-prev i,.mec-event-carousel-type4 .owl-next i,.mec-event-carousel-type4 .owl-prev i{font-size:40px;color:#282828}.mec-event-carousel-type2 .owl-next i:hover,.mec-event-carousel-type2 .owl-prev i:hover,.mec-event-carousel-type3 .owl-next i:hover,.mec-event-carousel-type3 .owl-prev i:hover{color:#000;cursor:pointer}.mec-event-footer-carousel-type2 .mec-event-sharing-wrap .mec-event-sharing{top:auto;bottom:60px}.mec-event-footer-carousel-type2 .mec-event-sharing-wrap .mec-event-sharing:after,.mec-event-footer-carousel-type2 .mec-event-sharing-wrap .mec-event-sharing:before{top:auto;bottom:-19px;border-color:#e2e2e2 transparent transparent transparent}.mec-event-footer-carousel-type2 .mec-event-sharing-wrap .mec-event-sharing:after{bottom:-18px;border-color:#fff transparent transparent transparent}@media only screen and (min-width:320px) and (max-width:768px){.mec-event-carousel-type2 .owl-next,.mec-event-carousel-type2 .owl-prev,.mec-event-carousel-type3 .owl-next,.mec-event-carousel-type3 .owl-prev,.mec-event-carousel-type4 .owl-next,.mec-event-carousel-type4 .owl-prev{position:initial;top:100%}}.mec-event-carousel-type3 .mec-event-article{margin:0 10px}.event-carousel-type3-head .mec-event-image,.event-carousel-type3-head .mec-event-image img{width:100%;height:auto}.event-carousel-type3-head .mec-event-footer-carousel-type3{background:#fff;display:inline-block;width:calc(100% - 40px);margin-top:-74px;position:relative;margin-left:20px;margin-right:20px;margin-bottom:6px;padding:8% 11%;box-shadow:0 2px 10px -2px rgba(0,0,0,.2)}.event-carousel-type3-head .mec-event-footer-carousel-type3 .mec-booking-button{border:1px solid #e4e4e4;text-transform:uppercase;float:right;padding:7px 23px 7px;font-size:12px;color:#707070;font-weight:500}.event-carousel-type3-head .mec-event-footer-carousel-type3 .mec-booking-button:hover{color:#fff}.mec-event-footer-carousel-type3 span{font-size:15px;color:#9a9a9a;font-weight:300;display:block;margin-top:30px}.mec-event-footer-carousel-type3 .mec-event-carousel-title{font-size:29px;font-weight:700}.event-carousel-type3-head .mec-event-footer-carousel-type3 .mec-event-carousel-title{font-size:26px;font-weight:700;color:#1c1d21;margin-top:15px;letter-spacing:-1px}.mec-event-footer-carousel-type3 .mec-event-carousel-title a{color:inherit}.event-carousel-type3-head .mec-event-footer-carousel-type3 p{font-size:16px;font-weight:300;color:#444!important;margin-bottom:36px}.mec-event-carousel-type3 .owl-next{right:-70px}.mec-event-carousel-type3 .owl-prev{left:-70px}.mec-event-footer-carousel-type3 .mec-event-sharing-wrap{left:11%}.mec-event-footer-carousel-type3 .mec-event-sharing-wrap .mec-event-sharing{top:auto;bottom:60px}.mec-event-footer-carousel-type3 .mec-event-sharing-wrap .mec-event-sharing:after,.mec-event-footer-carousel-type3 .mec-event-sharing-wrap .mec-event-sharing:before{top:auto;bottom:-19px;border-color:#e2e2e2 transparent transparent transparent}.mec-event-footer-carousel-type3 .mec-event-sharing-wrap .mec-event-sharing:after{bottom:-18px;border-color:#fff transparent transparent transparent}.event-carousel-type3-head .mec-end-date-label{display:inline;margin-left:2px}.event-carousel-type4-head.clearfix{position:relative;overflow:hidden;background:#fff}.event-carousel-type4-head .mec-event-overlay{position:absolute;left:0;right:0;bottom:0;top:0;width:auto;height:auto;background-color:rgba(36,36,36,.4);transition:all .33s ease-in-out}.mec-event-hover-carousel-type4{font-size:15px;color:#fff;position:absolute;bottom:0;padding:50px 35px;transition:all .33s ease-in-out;opacity:0;visibility:hidden}.mec-event-carousel-type4 .mec-event-article{margin:0 10px}.mec-event-carousel-type4 .mec-event-article:hover .mec-event-hover-carousel-type4{opacity:1;visibility:visible}.mec-event-hover-carousel-type4 .mec-event-icon{font-size:18px;float:left;margin-right:14px;color:#fff;padding:13px}.mec-event-hover-carousel-type4 .mec-event-date{font-size:11px;text-transform:uppercase;font-weight:400;line-height:1.6}.mec-event-hover-carousel-type4 .mec-event-date span{display:block;font-weight:700;font-size:14px}.mec-event-hover-carousel-type4 .mec-event-title{color:#fff;margin:20px 0 38px;font-size:16px;font-weight:700;text-transform:uppercase;font-style:normal}.mec-event-hover-carousel-type4 .mec-btn-wrapper{text-align:left}.mec-event-hover-carousel-type4 .mec-event-button{color:#fff;background-color:#191919;border:2px #191919 solid;padding:10px 14px;letter-spacing:1.5px;font-size:11px;font-weight:700;font-style:normal;transition:all .22s ease;text-decoration:none}.mec-event-hover-carousel-type4 .mec-event-button:hover{color:#191919;background-color:#fff;border-color:#fff;border-radius:1px}.mec-event-carousel-type4 .owl-next{right:-70px}.mec-event-carousel-type4 .owl-prev{left:-70px}.mec-carousel-type4-head{margin-bottom:25px}.mec-carousel-type4-head-title{padding:0 11px;text-align:left;font-weight:700;font-size:20px;color:#000}.mec-carousel-type4-head-link{text-align:right;padding:0 11px}.mec-carousel-type4-head-link a{background:#222;color:#fff;padding:10px 38px;transition:all .3s ease}.mec-carousel-type4-head-link a:hover,.mec-carousel-type4-head-link a:visited{color:#fff}@media (max-width:960px){.mec-event-carousel-type4 .owl-stage{left:-50px}}.mec-wrap .mec-event-countdown-style1{color:#fff;padding:0!important;display:table;background:#437df9}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part1{z-index:5;padding:50px 1% 50px 4%;display:table-cell;float:none;vertical-align:middle}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2{background-color:rgba(0,0,0,.05);height:100%;padding-top:0;display:table-cell;float:none;position:relative;vertical-align:middle}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part3{background-color:#f8f8f8;display:table-cell;float:none;text-align:center;vertical-align:middle}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part1 .mec-event-title{color:#fff;font-size:15px;margin-top:30px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part1 .mec-event-upcoming{font-size:36px;font-weight:700;line-height:1;margin-top:0}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2 .mec-event-countdown>div{display:inline-block}.mec-event-countdown-style1 .mec-events-meta-group-countdown{color:#c9c9c9;margin-bottom:30px;padding:20px 30px;background:#fff;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-countdown-style1 .mec-event-countdown-part1 .mec-event-upcoming span{display:block}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2:after{content:"";position:absolute;display:inline-block;z-index:1;top:50%;margin-top:-11px;right:-24px;width:0;border-width:12px;border-style:solid;border-color:transparent transparent transparent #4077ed}.mec-event-countdown-style1 .mec-event-countdown-part2 .mec-event-date-place{text-align:center;padding-bottom:8px}.mec-event-countdown-part2 .mec-event-place,.mec-event-countdown-style1 .mec-event-countdown-part2 .mec-event-date{display:inline;font-size:14px;padding:0 5px;text-align:center}.mec-event-countdown-style1 .mec-event-countdown-part3 .mec-event-button{display:inline-block;padding:14px 30px;vertical-align:middle;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#fff;background:#4077ed;transition:all .24s ease}.mec-event-countdown-style1 .mec-event-countdown-part3 .mec-event-button:hover{background:#222}.mec-event-countdown-style1 .mec-event-countdown{text-align:center;display:table;table-layout:fixed;margin:0 auto}.mec-event-countdown-style1 .mec-event-countdown .label-w{letter-spacing:1px;text-transform:uppercase;position:relative}.mec-event-countdown-style1 .mec-event-countdown .block-w{display:table-cell;margin:0 20px 10px;position:relative;height:70px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li{background-color:rgba(0,0,0,.1);margin:5px;padding:20px 0;min-width:94px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li span{font-size:30px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li .label-w{font-size:12px;color:#fff;margin:8px 0 0;line-height:1}@media only screen and (min-width:1200px){.mec-wrap.mec-sm959 .mec-event-countdown-style1 .mec-event-countdown-part1,.mec-wrap.mec-sm959 .mec-event-countdown-style1 .mec-event-countdown-part2,.mec-wrap.mec-sm959 .mec-event-countdown-style1 .mec-event-countdown-part3{width:100%;display:block;padding-top:50px;padding-bottom:50px}.mec-wrap.mec-sm959 .mec-event-countdown-style1 .mec-event-countdown-part2:after{border-color:#4077ed transparent transparent transparent;top:auto;margin-top:0;bottom:-24px;margin-left:-11px;left:50%}}@media (max-width:960px){.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part1,.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2,.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part3{width:100%;display:block;padding-top:50px;padding-bottom:50px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2:after{border-color:#4077ed transparent transparent transparent;top:auto;margin-top:0;bottom:-24px;margin-left:-11px;left:50%;transform:rotate(90deg)}}@media (max-width:480px){.mec-event-countdown-style1 .mec-event-countdown .block-w{margin:3px;height:auto}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li{padding:10px 5px;min-width:50px;margin:3px 1px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li span{font-size:15px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li .label-w{font-size:8px}.mec-event-countdown-style1 .mec-event-countdown-part2 .mec-event-date-place{display:inline}}.mec-wrap .mec-event-countdown-style2{color:#fff;padding:30px 0;background:#437df9;max-width:600px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part1,.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part2,.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part3{width:100%;float:none;vertical-align:middle;padding:50px 10% 50px 10%}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part2{padding-top:12%;padding-bottom:0}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part1 .mec-event-title{color:#fff;font-size:15px;margin-top:30px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part1 .mec-event-upcoming{font-size:36px;font-weight:700;line-height:1;margin-top:0}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part2 .mec-event-countdown>div{display:inline-block}.mec-event-countdown-style2 .mec-events-meta-group-countdown{color:#c9c9c9;margin-bottom:30px;padding:20px 30px;background:#fff;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-countdown-style2 .mec-event-countdown-part1 .mec-event-upcoming span{display:block}.mec-event-countdown-style2 .mec-event-countdown-part2 .mec-event-date-place{text-align:left;padding-bottom:8px}.mec-event-countdown-part2 .mec-event-place,.mec-event-countdown-style2 .mec-event-countdown-part2 .mec-event-date{display:inline;font-size:14px;padding:0 8px}.mec-event-countdown-style2 .mec-event-countdown-part3 .mec-event-button{display:inline-block;padding:14px 30px;vertical-align:middle;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#222;background:#fff;transition:all .24s ease}.mec-event-countdown-style2 .mec-event-countdown-part3 .mec-event-button:hover{background:#222;color:#fff}.mec-event-countdown-style2 .mec-event-countdown{text-align:center;display:table;table-layout:fixed;margin:0}.mec-event-countdown-style2 .mec-event-countdown .label-w{letter-spacing:1px;text-transform:uppercase;position:relative}.mec-event-countdown-style2 .mec-event-countdown .block-w{display:table-cell;margin:0 20px 10px;position:relative;height:70px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li{background-color:rgba(0,0,0,.1);margin:5px;padding:20px 0;min-width:94px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li span{font-size:30px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li .label-w{font-size:12px;color:#fff;margin:8px 0 0;line-height:1}@media only screen and (max-width:767px){.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li{min-width:80px;padding:15px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li span{font-size:26px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li .label-w{font-size:11px}}@media only screen and (max-width:479px){.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li{min-width:40px;padding:15px 10px;margin:2px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li span{font-size:20px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li .label-w{font-size:9px}}@media (max-width:380px){.mec-event-countdown-style2 .mec-event-countdown .block-w{margin:3px;height:auto}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li{padding:10px 4px;margin:4px 1px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li span{font-size:15px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li .label-w{font-size:7px}}.mec-wrap .mec-event-countdown-style3{color:#fff;padding:0;background:#282828;display:table;width:100%}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1{width:68%;padding:50px 1% 50px 4%;vertical-align:middle;display:table-cell;position:relative}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part2{width:32%;display:table-cell;position:relative;padding-bottom:0;padding-top:0}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part2 img{width:100%;display:block}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-countdown-part-title span{font-weight:300;display:block}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-upcoming{color:#fff;font-size:36px;letter-spacing:-2px;font-weight:700;line-height:1;margin-top:-10px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part2 .mec-event-countdown>div{display:inline-block}.mec-event-countdown-style3 .mec-events-meta-group-countdown{color:#c9c9c9;margin-bottom:30px;padding:20px 30px;background:#fff;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-countdown-style3 .mec-event-countdown-part2 .mec-event-date-place{text-align:center;padding-bottom:8px}.mec-event-countdown-part2 .mec-event-place,.mec-event-countdown-style3 .mec-event-countdown-part2 .mec-event-date{display:inline;font-size:14px;padding:0 5px;text-align:center}.mec-event-countdown-style3 .mec-event-countdown-part3 .mec-event-button{display:inline-block;padding:14px 30px;vertical-align:middle;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#fff;background:#4077ed;transition:all .24s ease}.mec-event-countdown-style3 .mec-event-countdown-part3 .mec-event-button:hover{background:#222}.mec-event-countdown-style3 .mec-event-countdown{text-align:center;display:table;table-layout:fixed;margin:0 auto;position:absolute;top:40px;right:20px}.mec-event-countdown-style3 .mec-event-countdown .label-w{letter-spacing:1px;text-transform:uppercase;position:relative}.mec-event-countdown-style3 .mec-event-countdown .block-w{display:table-cell;margin:0 20px 10px;position:relative;height:70px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li{padding:15px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li span{font-size:30px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li .label-w{font-size:11px;color:#888;margin:8px 0 0;line-height:1}.mec-event-countdown-style3 .mec-event-date{width:176px;height:96px;background:#40d9f1;color:#fff;font-size:13px;position:absolute;left:-27px;top:146px}.mec-event-countdown-style3 .mec-event-date:after{content:"";position:absolute;display:inline-block;z-index:1;bottom:-18px;left:8px;width:0;border-width:19px;border-style:solid;border-color:transparent transparent #40d9f1 transparent;transform:rotate(45deg)}.mec-event-countdown-style3 .mec-event-date .mec-date1{font-size:50px;position:absolute;top:36px;left:12px;letter-spacing:-3px}.mec-event-countdown-style3 .mec-event-date .mec-date2{position:absolute;left:80px;top:26px}.mec-event-countdown-style3 .mec-event-date .mec-date3{position:absolute;left:80px;top:45px}.mec-event-countdown-style3 .mec-event-countdown-part-details{padding-top:35px;margin-bottom:50px;min-height:100px}.mec-event-countdown-style3 .mec-event-countdown-part-details .mec-event-title{font-size:17px;color:#fff;line-height:1.4;padding-right:20px}.mec-event-countdown-style3 .mec-event-countdown-part-details .mec-event-link{color:#fff;font-size:12px;position:relative;padding-left:22px}.mec-event-countdown-style3 .mec-event-countdown-part-details .mec-event-link:before{content:"";display:inline-block;width:18px;border-top:1px solid #fff;position:absolute;left:0;top:8px}.mec-event-countdown-style3 .mec-event-title-link{position:absolute;left:190px;top:152px}.event-carousel-type1-head .mec-event-date-carousel:before,.mec-event-countdown-style3 .mec-event-date:before{content:'';position:absolute;left:0;bottom:0;z-index:2;width:100%;height:96px;background:0 0;display:inline-block;box-shadow:0 5px 5px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.mec-wrap.mec-sm959 .mec-event-countdown-style3 .mec-event-countdown li{padding:10px}.mec-wrap.mec-sm959 .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-upcoming{font-size:31px}}@media (max-width:959px){.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1,.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part2{width:100%;display:block}.mec-event-countdown-style3 .mec-event-title-link{top:190px}.mec-event-countdown-style3 .mec-event-countdown{top:96px}.mec-event-countdown-style3 .mec-event-date{left:0;top:190px}.mec-event-countdown-style3 .mec-event-date:after{display:none}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-countdown-part-title span{display:inline}.mec-event-countdown-style3 .mec-event-countdown-part-details{min-height:150px}}@media (max-width:767px){.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-upcoming{font-size:26px;letter-spacing:-1px}.mec-event-countdown-style3 .mec-event-title-link{left:130px}.mec-event-countdown-style3 .mec-event-date{width:120px;font-size:10px;height:63px}.mec-event-countdown-style3 .mec-event-date .mec-date1{font-size:36px;top:20px;left:4px;letter-spacing:-2px}.mec-event-countdown-style3 .mec-event-date .mec-date2{position:absolute;left:52px;top:12px}.mec-event-countdown-style3 .mec-event-date .mec-date3{position:absolute;left:52px;top:28px}}@media (max-width:380px){.mec-event-countdown-style3 .mec-event-title-link{left:10px;top:260px}.mec-event-countdown-style3 .mec-event-countdown-part-details{min-height:300px}.mec-event-countdown-style3 .mec-event-countdown .block-w{margin:3px;height:auto}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li{padding:10px 5px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li span{font-size:15px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li .label-w{font-size:8px}}.mec-slider-t1-wrap{width:100%;padding:60px 90px;background:#f7f7f7;min-height:560px;position:relative}.mec-slider-t1{height:500px;box-shadow:0 5px 35px 0 rgba(0,0,0,.13)}.mec-slider-t1 .mec-event-article{position:relative;height:500px}.mec-slider-t1 .mec-slider-t1-img{position:relative;background-size:cover!important;background-position:center!important;width:50%;height:100%;float:right;margin:0;overflow:hidden}.mec-slider-t1 .mec-slider-t1-content{width:50%;float:left;height:100%;background:#fff;padding:6%}.mec-slider-t1-content.mec-event-grid-modern .mec-event-article{border:none;padding:0;margin:0;box-shadow:none}.mec-slider-t1-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t1-content.mec-event-grid-modern .mec-event-title a:hover{text-decoration:underline}.mec-slider-t1-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:54px;height:54px;line-height:48px;border-radius:0;text-align:center;background:#fff;box-shadow:0 2px 11px 0 rgba(0,0,0,.045);transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:50%;margin-top:-27px;cursor:pointer}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 29px 0 rgba(0,0,0,.095)}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next{left:auto;right:-100px}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev{right:auto;left:-100px}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:12px;color:#282828;transition:all .21s ease}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{font-size:13px;color:#000;cursor:pointer}@media only screen and (min-width:961px){.mec-slider-t1{margin:0 auto;max-width:900px}}@media only screen and (max-width:960px){.mec-slider-t1 .mec-slider-t1-content,.mec-slider-t1 .mec-slider-t1-img{width:100%;float:none}.mec-slider-t1 .mec-slider-t1-img{height:300px}.mec-slider-t1,.mec-slider-t1 .mec-event-article{height:auto}}@media only screen and (max-width:768px){.mec-slider-t1-wrap{padding:0}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev{top:40px;margin-top:0}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next{left:auto;right:10px}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev{right:auto;left:10px}}@media only screen and (max-width:479px){.mec-slider-t1-content.mec-event-grid-modern .mec-event-title{font-size:22px}.mec-slider-t1-content.mec-event-grid-modern .event-grid-modern-head .mec-event-day{font-size:25px}}.mec-slider-t2-wrap{width:100%;padding:0;background:#fff;min-height:600px;position:relative}.mec-slider-t2 .mec-event-article{height:600px;position:relative;border:none;padding:0;margin:0;box-shadow:none;background:0 0}.mec-slider-t2 .mec-slider-t2-img{position:absolute;left:0;top:0;background-size:cover!important;background-position:center!important;width:70%;height:100%;margin:0;overflow:hidden}.mec-slider-t2 .mec-slider-t2-content{width:50%;position:absolute;right:0;top:60px;bottom:60px;padding:5%}.mec-slider-t2 .mec-slider-t2-content.mec-event-grid-modern *{color:#fff}.mec-slider-t2 .mec-slider-t2-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t2-content.mec-event-grid-modern .mec-event-content,.mec-slider-t2-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{background:0 0}.mec-slider-t2-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px}.mec-slider-t2-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover{background:#fff;color:#000;border-color:#fff}.mec-slider-t2-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover,.mec-slider-t2-content.mec-event-grid-modern .mec-event-title a:hover{color:#111}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:44px;height:44px;line-height:38px;border-radius:0;text-align:center;background:0 0;border:1px solid #fff;transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:84px;cursor:pointer}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.075);background:#fff}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next{right:30px}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev{right:82px}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:14px;color:#fff;opacity:1;transition:all .25s ease}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{color:#000;cursor:pointer}.mec-wrap.colorskin-custom .mec-slider-t2 .mec-event-article .mec-event-date.mec-color{color:#fff}@media only screen and (min-width:961px){.mec-slider-t2{margin:0 auto;max-width:1200px}}@media only screen and (max-width:960px){.mec-slider-t2 .mec-slider-t2-content,.mec-slider-t2 .mec-slider-t2-img{width:100%;float:none;position:static}.mec-slider-t2 .mec-slider-t2-img{height:300px}.mec-slider-t2 .mec-event-article{height:auto}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev{top:40px}}@media only screen and (max-width:479px){.mec-slider-t2-content.mec-event-grid-modern .mec-event-title{font-size:22px}}.mec-slider-t3-wrap{width:100%;padding:0;background:#161616;min-height:700px;position:relative}.mec-slider-t3 .mec-event-article{height:700px;position:relative;border:none;padding:0;margin:0;box-shadow:none;background:0 0}.mec-slider-t3 .mec-slider-t3-img{position:absolute;left:0;top:0;background-size:cover!important;background-position:center!important;width:100%;height:100%;margin:0;overflow:hidden;opacity:.68;z-index:1}.mec-slider-t3 .mec-slider-t3-content{width:50%;height:auto;vertical-align:middle;display:table;position:absolute;left:0;top:0;bottom:0;padding:0 2% 0 7%;margin:auto 0;background:0 0;z-index:2}.mec-slider-t3 .mec-slider-t3-content.mec-event-grid-modern :not(.mec-color){color:#fff}.mec-slider-t3-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t3-content.mec-event-grid-modern .mec-event-content,.mec-slider-t3-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{background:0 0}.mec-slider-t3-content.mec-event-grid-modern .mec-booking-button{display:inline-block;border:1px solid;font-weight:500;letter-spacing:1px;text-transform:uppercase;font-size:13px;padding:0 42px;line-height:49px;height:50px;transition:all .21s ease}.mec-slider-t3-content.mec-event-grid-modern .mec-booking-button:hover{background:#fff;color:#000;border-color:#fff}.mec-slider-t3-content.mec-event-grid-modern .mec-slider-t3-footer{text-align:left;padding:15px 15px 10px}.mec-slider-t3-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover,.mec-slider-t3-content.mec-event-grid-modern .mec-event-title a:hover{color:#40d9f1}.mec-slider-t3-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover{border-color:#40d9f1}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:44px;height:44px;line-height:38px;border-radius:0;text-align:center;background:0 0;border:1px solid #fff;transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:50%;margin-top:-22px;cursor:pointer}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.075);background:#fff}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next{right:10px}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev{right:auto;left:10px}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:14px;color:#fff;opacity:1;transition:all .25s ease}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{color:#000;cursor:pointer}@media only screen and (min-width:961px){.mec-slider-t3-content.mec-event-grid-modern .mec-event-title{font-size:50px;font-weight:300}.mec-slider-t3-content.mec-event-grid-modern .mec-event-description{font-size:19px}}@media only screen and (max-width:767px){.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev{top:40px;margin-top:0}}@media only screen and (max-width:479px){.mec-slider-t3 .mec-slider-t3-content{width:100%}.mec-slider-t3-content.mec-event-grid-modern .mec-event-title{font-size:22px}.mec-slider-t1-content.mec-event-grid-modern .event-grid-modern-head .mec-event-day{font-size:25px}}.mec-slider-t4-wrap{width:100%;padding:0;background:#161616;min-height:700px;position:relative}.mec-slider-t4 .mec-event-article{height:700px;border:none;padding:0;margin:0;box-shadow:none;background:0 0}.mec-slider-t4 .mec-slider-t4-img{position:absolute;left:0;top:0;background-size:cover!important;background-position:center!important;width:100%;height:100%;margin:0;overflow:hidden;z-index:1}.mec-slider-t4 .mec-slider-t4-content{width:auto;max-width:700px;background:rgba(37,37,37,.94)!important;height:auto;vertical-align:middle;display:table;position:absolute;left:8%;top:19%;padding:3%;margin:auto 0;background:0 0;z-index:2}.mec-slider-t4 .mec-slider-t4-content.mec-event-grid-modern :not(.mec-color){color:#fff}.mec-slider-t4-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t4-content.mec-event-grid-modern .mec-event-content,.mec-slider-t4-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{background:0 0}.mec-slider-t4-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:13px;padding:0 42px;line-height:49px;height:50px}.mec-slider-t4-content.mec-event-grid-modern .mec-event-title a:hover{color:#40d9f1}.mec-slider-t4-content.mec-event-grid-modern .mec-slider-t4-footer{text-align:left;padding:15px 15px 10px}.mec-slider-t4-content.mec-event-grid-modern .mec-booking-button{display:inline-block;border:1px solid;font-weight:500;letter-spacing:1px;text-transform:uppercase;font-size:13px;padding:0 42px;line-height:49px;height:50px;transition:all .21s ease}.mec-slider-t4-content.mec-event-grid-modern .mec-booking-button:hover{background:#fff;color:#000;border-color:#fff}.mec-slider-t4-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover,.mec-slider-t4-content.mec-event-grid-modern .mec-event-title a:hover{color:#111}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:44px;height:44px;line-height:40px;border-radius:0;text-align:center;background:0 0;border:1px solid #fff;transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:34px;cursor:pointer}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.075);background:#fff}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next{right:60px}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev{right:112px}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:14px;color:#fff;opacity:1;transition:all .25s ease}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{color:#000;cursor:pointer}@media only screen and (max-width:767px){.mec-slider-t4 .mec-slider-t4-content{width:100%;left:0;top:auto;bottom:0}.mec-slider-t4-content.mec-event-grid-modern .mec-event-title{font-size:22px}.mec-slider-t1-content.mec-event-grid-modern .event-grid-modern-head .mec-event-day{font-size:25px}}.mec-slider-t5-wrap{width:auto;max-width:570px;padding:0;margin:0 auto 25px;background:#f7f7f7;min-height:480px;position:relative}.mec-slider-t5{height:auto;box-shadow:0 5px 35px 0 rgba(0,0,0,.13)}.mec-slider-t5 .mec-event-article{position:relative;height:auto}.mec-slider-t5 .mec-slider-t5-img{position:relative;background-size:cover!important;background-position:center!important;width:100%;height:300px;float:none;margin:0;overflow:hidden}.mec-slider-t5 .mec-slider-t5-content{width:100%;float:none;height:100%;background:#fff;padding:0 20px 20px;margin-bottom:0}.mec-slider-t5 .mec-events-content p{margin-bottom:20px}.mec-slider-t5-content.mec-event-grid-modern .mec-event-article{border:none;padding:0;margin:0;box-shadow:none}.mec-slider-t5-wrap .mec-event-grid-modern .event-grid-modern-head{margin-bottom:10px;padding:14px 34px;margin-left:-20px;margin-right:-20px;text-align:left;background:#f9f9f9;border-bottom:1px solid #eee}.mec-slider-t5-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t5 .mec-slider-t5-col6{width:50%;float:left;height:100%}.mec-slider-t5 .mec-slider-t5-col6 i{font-size:42px;float:left;margin-right:7px;height:58px}.mec-slider-t5 .mec-slider-t5-col6 h6{text-transform:uppercase;font-size:17px;padding:4px 0;display:inline;color:#444}.mec-slider-t5 .mec-slider-t5-col6 address{font-size:12px;margin-bottom:0}.mec-slider-t5-content.mec-event-grid-modern .mec-event-title a:hover{text-decoration:underline}.mec-slider-t5-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px;top:0}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:44px;height:44px;line-height:40px;border-radius:0;text-align:center;background:0 0;border:1px solid #fff;transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:34px;cursor:pointer}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.075);background:#fff}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next{right:30px}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev{right:82px}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:14px;color:#fff;opacity:1;transition:all .25s ease}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{color:#000;cursor:pointer}@media only screen and (max-width:768px){.mec-slider-t5 .mec-slider-t5-col6{width:100%;margin:10px 0}}@media only screen and (max-width:479px){.mec-slider-t5-content.mec-event-grid-modern .mec-event-title{font-size:24px}}.mec-single-modern .mec-events-event-image{text-align:center}.mec-single-modern .mec-events-event-image img{width:100%}.mec-single-modern .mec-single-event-bar{background-color:#f7f7f7;margin:20px 0 0;padding:15px;display:table;width:100%}.mec-single-modern .mec-single-event-bar>div{display:table-cell}.mec-single-modern .mec-single-event-bar>div i{font-size:20px;vertical-align:middle}.mec-single-modern .mec-single-event-bar>div .mec-time-comment{font-size:12px;color:#999}.mec-single-modern .mec-single-event-bar>div h3{text-transform:uppercase;font-size:16px;font-weight:700;padding-bottom:5px;display:inline;color:#000;padding-left:10px}.mec-single-modern .mec-single-event-bar>div dd{font-size:14px;color:#8d8d8d;padding-left:34px;margin-bottom:0}.mec-single-modern .col-md-4 .mec-frontbox{margin-top:-50px;margin-bottom:70px;padding:20px;border:none;background:#f7f7f7;box-shadow:none}.mec-next-occurrence li{list-style:none}@media only screen and (min-width:960px){.mec-single-modern .col-md-4 .mec-frontbox{margin-left:20px}}@media only screen and (max-width:960px){.mec-single-modern .mec-single-event-bar>div{display:block}}.lity-content>div{overflow:auto}.mec-next-event-details li{list-style:none;margin-top:20px}.mec-next-event-details h6{text-transform:uppercase;font-size:13px;padding-bottom:5px;display:inline;color:#222;padding-left:0}.mec-next-event-details abbr{display:block;padding-left:12px;color:#8d8d8d}.mec-next-event-details i{margin-right:10px;margin-left:12px}.mec-next-event-details i:before{color:#40d9f1}.mec-next-event-details a{text-align:center;display:block;background:#fff;padding:6px 0;font-size:11px;font-weight:400;letter-spacing:0;border:1px solid #e3e3e3;transition:.3s}.mec-single-modal.mec-single-modern .mec-single-title{text-align:center;padding:15px 10px 0}.admin-bar .mec-single-modal.mec-single-modern .mec-single-title{padding-top:40px}.mec-single-modal.mec-single-modern .mec-single-event-bar{padding:5px}.mec-single-modal.mec-single-modern .mec-single-event-bar>div dd{font-size:13px}.mec-single-modal.mec-single-modern .mec-single-event-bar>div h3{font-size:15px}@media only screen and (min-width:960px){.mec-single-modal.mec-single-modern .col-md-4 .mec-frontbox{margin-left:0}}.mec-single-modal.mec-single-modern .col-md-4 .mec-frontbox{margin-top:10px;margin-bottom:10px}.mec-single-modal.mec-single-modern .col-md-4 .mec-frontbox.mec-event-meta{padding:0}.mec-single-modal .mec-event-meta dd.mec-organizer-email a,.mec-single-modal .mec-event-meta dd.mec-organizer-url a{font-size:12px;display:block}.mec-modal-wrap{max-width:60vw;max-height:90vh!important;background:#fff;box-shadow:0 1px 55px rgba(0,0,0,.5);overflow-x:hidden!important}@media(max-width:1023px){.mec-modal-wrap{max-width:80vw}}.mec-single-modal .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li,.mec-single-modal .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li a.mec-events-button{display:block;text-align:center}.mec-single-modal .flip-clock-divider .flip-clock-label{position:absolute;top:60px}.mec-single-modal .flip-clock-divider:not(:first-child){width:48px!important}.mec-single-modal .flip-clock-divider.minutes .flip-clock-label{top:150px;left:-539px}.mec-single-modal .flip-clock-divider.seconds .flip-clock-label{top:87px}.mec-single-modal .flip-clock-wrapper{left:14%}.mec-single-modal .twodaydigits>ul:nth-child(11),.mec-single-modal .twodaydigits>ul:nth-child(12),.mec-single-modal .twodaydigits>ul:nth-child(8),.mec-single-modal .twodaydigits>ul:nth-child(9){margin-top:30px!important}.mec-events-toggle{max-width:960px;margin-left:auto;margin-right:auto}.mec-events-toggle .mec-toggle-item{border:1px solid #e4e4e4;margin-bottom:15px;box-shadow:0 10px 15px #f3f3f3}.mec-events-toggle .mec-toggle-item-inner{cursor:pointer;position:relative;padding:30px 60px 30px 15px;background:#fff;transition:all .3s ease}.mec-events-toggle .mec-toggle-item-inner:hover{background:#fbfbfb}.mec-toggle-item-col{float:left;width:180px;margin-top:-6px;border-right:1px solid #e3e3e3;margin-right:15px}.mec-toggle-item-col .mec-event-date{font-size:38px;line-height:40px;float:left;margin-right:8px}.mec-toggle-item-col .mec-event-month{text-transform:uppercase;font-size:12px;line-height:14px;padding-top:4px;font-weight:700}.mec-toggle-item-col .mec-event-detail{font-size:10px}.mec-toggle-item-col .mec-event-day{margin-top:9px;color:silver;font-family:Roboto,sans-serif;font-size:35px;font-weight:100;text-transform:uppercase;letter-spacing:-1px}.mec-events-toggle .mec-toggle-title{color:#000;font-size:23px;font-weight:600;margin-bottom:0;transition:all .3s ease;display:inline-block}.mec-events-toggle .mec-toggle-item-inner span.event-color{width:5px;height:100%;position:absolute;left:-1px;top:0;bottom:0;border-radius:0;margin:0}.mec-events-toggle .mec-toggle-item-inner i{position:absolute;font-size:30px;right:25px;top:50%;transform:translate(0,-50%);cursor:pointer}.mec-events-toggle .mec-toggle-item.is-open i.mec-sl-plus:before{content:"\e615"}.mec-events-toggle .mec-toggle-item.is-open .mec-toggle-title{background:#f8f8f8;cursor:pointer}.mec-events-toggle .mec-toggle-content{border-top:1px solid #e4e4e4}.mec-events-toggle .mec-toggle-content .mec-modal-wrap{margin:0;max-width:100%;box-shadow:none}.mec-events-toggle .mec-toggle-content .mec-modal-wrap .mec-single-event{margin:0}.mec-events-toggle .mec-toggle-content .mec-single-event-bar,.mec-events-toggle .mec-toggle-content h1.mec-single-title{display:none}.mec-events-toggle .media-links a{margin-bottom:0}.mec-events-toggle .mec-toggle-content .mec-toggle-meta{margin-bottom:14px}.mec-events-toggle #mec_speakers_details.mec-frontbox{padding:0;margin:0}.mec-events-toggle .mec-toggle-item h3.mec-speakers{border:none;text-align:left}.mec-events-toggle .mec-toggle-item h3.mec-speakers:before{content:"\e063";font-family:simple-line-icons;border:none;position:relative;display:inline-block;left:unset;bottom:unset;font-size:22px;font-weight:400;padding:0 11px 0 28px;vertical-align:middle}@media only screen and (max-width:767px){.mec-toggle-item-col{float:none;width:100%;border-right:none;margin-bottom:5px}}.mec-events-agenda-wrap{margin:10px 0;border:1px solid #e9e9e9;padding-left:20px;box-shadow:0 2px 2px rgba(0,0,0,.03)}.mec-events-agenda{padding:0;border-bottom:1px solid #e9e9e9;overflow:hidden}.mec-agenda-date-wrap{width:210px;padding-top:15px;float:left;font-size:13px}.mec-agenda-date-wrap i,.mec-agenda-event i{font-size:11px;color:#aaa;margin-right:4px;margin-left:1px}.mec-agenda-event i{vertical-align:middle;margin-right:1px}.mec-agenda-events-wrap{float:left;width:calc(100% - 210px);background:#f9f9f9;padding:15px}.mec-agenda-time{font-size:11px;color:#707070;padding-right:10px;width:138px;display:inline-block}.mec-agenda-event-title{position:relative;padding-left:14px}.mec-agenda-event-title a{font-family:Roboto,Montserrat,Helvetica,Arial,sans-serif;font-size:14px;font-weight:600;color:#333}.mec-agenda-event-title span.event-color{width:9px;height:9px;position:absolute;left:0;top:4px;margin:0}.mec-agenda-date-wrap span.mec-agenda-day{color:#aaa;font-size:12px}@media only screen and (max-width:767px){.mec-agenda-date-wrap,.mec-agenda-events-wrap{float:none;width:100%}.mec-events-agenda span.mec-agenda-event-title{display:block;width:100%}.mec-agenda-event-title span.event-color{top:7px}.mec-agenda-event-title a{font-size:13px}}.mec-yearly-view-wrap{margin:0 0 15px;border:1px solid #e6e6e6;box-shadow:0 2px 4px rgba(0,0,0,.04);border-bottom-width:4px}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar{max-width:100%;width:232px;padding:10px;background:#fff;margin:10px;display:inline-block}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar dl dt{transition:none;height:30px;width:30px;line-height:30px;border-radius:0;font-size:12px}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar .mec-calendar-events-sec{padding:10px}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar .mec-has-event:after{width:4px;height:4px;bottom:3px;margin-left:-2px}.mec-yearly-view-wrap .mec-calendar-side .mec-calendar-table{min-height:200px}.mec-calendar.mec-yearly-calendar .mec-calendar-table-head dl dt{background:#f9f9f9;font-size:13px}.mec-calendar.mec-yearly-calendar .mec-calendar-table-title{text-align:center;font-size:15px;font-weight:700;color:#222;margin-top:-5px;padding-bottom:5px}.mec-yearly-view-wrap .mec-yearly-calendar-sec{min-height:200px;width:538px;overflow:hidden;float:left;background:#f8f8f8;padding:15px}.mec-yearly-view-wrap .mec-yearly-agenda-sec{min-height:200px;width:calc(100% - 538px);float:left;padding:0 0 0 20px;overflow:hidden}.mec-yearly-view-wrap .mec-yearly-title-sec{position:relative;padding:15px;text-align:center;border-bottom:1px solid #e6e6e6;box-shadow:0 1px 3px rgba(0,0,0,.02)}.mec-yearly-view-wrap .mec-yearly-title-sec h2{font-size:30px;line-height:40px;color:#333;margin:0;font-weight:700}.mec-yearly-view-wrap .mec-yearly-title-sec .mec-next-year,.mec-yearly-view-wrap .mec-yearly-title-sec .mec-previous-year{position:absolute;top:50%;margin-top:-15px;min-width:30px;height:30px;line-height:30px;padding:0 8px;text-align:center;background:#fff;color:#666;font-size:14px;border:1px solid #eee;border-radius:2px;box-shadow:0 2px 0 0 rgba(0,0,0,.015);transition:all .33s ease;cursor:pointer}.mec-yearly-view-wrap .mec-yearly-title-sec .mec-previous-year{right:auto;left:20px;padding-right:14px}.mec-yearly-view-wrap .mec-yearly-title-sec .mec-next-year{left:auto;right:20px;padding-left:14px}.mec-yearly-view-wrap .mec-yearly-title-sec .mec-next-year i,.mec-yearly-view-wrap .mec-yearly-title-sec .mec-previous-year i{font-size:12px;color:#40d9f1;cursor:pointer}@media only screen and (max-width:959px){.mec-yearly-view-wrap .mec-yearly-calendar-sec{width:268px;padding:10px 5px}.mec-yearly-view-wrap .mec-yearly-agenda-sec{width:calc(100% - 268px);padding:0 0 0 10px}}@media only screen and (max-width:767px){.mec-yearly-view-wrap .mec-yearly-agenda-sec,.mec-yearly-view-wrap .mec-yearly-calendar-sec{width:100%;float:none}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar{width:auto}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar dl dt{width:14.2%}.mec-yearly-view-wrap .mec-yearly-title-sec h2{font-size:25px}}.mec-yearly-view-wrap .mec-agenda-event i,.mec-yearly-view-wrap .mec-agenda-time{display:none}@media only screen and (min-width:768px){.mec-yearly-view-wrap .mec-events-agenda-wrap{margin-top:0;border:none;padding-left:0;box-shadow:none}.mec-yearly-view-wrap .mec-agenda-date-wrap{width:174px;font-size:11px;padding-top:10px}.mec-yearly-view-wrap .mec-agenda-events-wrap{width:calc(100% - 174px);padding:10px}.mec-yearly-view-wrap .mec-agenda-event-title a{font-size:13px}.mec-yearly-view-wrap .mec-agenda-event-title span.event-color{width:8px;height:8px}.mec-yearly-view-wrap .mec-agenda-date-wrap span.mec-agenda-day{font-size:11px}.mec-yearly-view-wrap .mec-yearly-calendar-sec{box-shadow:-2px 0 5px rgba(0,0,0,.03) inset}}@media only screen and (max-width:1200px){.mec-yearly-view-wrap .mec-agenda-event-title a{font-size:12px;padding-right:6px}}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table{padding-bottom:10px;border-bottom:none}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt:hover{cursor:pointer}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt.mec-timetable-has-no-event,.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt.mec-timetable-has-no-event:hover{color:#bbb;cursor:default}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt.mec-timetable-day-active{background:#40d9f1;color:#fff;position:relative}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt.mec-timetable-day-active:after{content:'';position:absolute;display:block;bottom:-20px;left:50%;margin-left:-10px;width:0;border-width:10px;border-style:solid;border-color:#40d9f1 transparent transparent transparent}.mec-timetable-events-list{padding:10px 20px;border:none;margin:0}.mec-timetable-events-list .mec-timetable-event{padding:10px 0;border-bottom:1px dashed #ddd}.mec-timetable-events-list .mec-timetable-event:last-child{border:none}.mec-timetable-event .mec-timetable-event-span{font-size:12px;color:#444;padding-right:30px;line-height:22px}.mec-timetable-events-list .mec-timetable-event i{font-size:13px;color:#aaa;margin-right:3px;vertical-align:baseline}.mec-timetable-event .mec-timetable-event-span a{color:#333}.mec-timetable-event .mec-timetable-event-time{font-size:11px}.mec-timetable-event .mec-timetable-event-time i{vertical-align:text-bottom}.mec-timetable-event .mec-timetable-event-title{font-size:13px}.mec-timetable-event .mec-timetable-event-title .event-color{width:10px;height:10px}.mec-timetable-events-list .mec-timetable-event.mec-util-hidden{display:none}.mec-timetable-events-list.mec-util-hidden{display:none}@media only screen and (min-width:768px){.mec-timetable-events-list{display:table;width:100%;margin:10px 0 20px}.mec-timetable-events-list .mec-timetable-event{display:table-row;padding:0;border:none;background:#fff}.mec-timetable-events-list .mec-timetable-event:hover{background:#fafafa}.mec-timetable-event .mec-timetable-event-span{display:table-cell;padding:10px 15px;border-bottom:1px solid #ebebeb}.mec-timetable-events-list .mec-timetable-event:last-child .mec-timetable-event-span{border-bottom:none}}@media only screen and (max-width:767px){.mec-timetable-event .mec-timetable-event-title{display:block;width:100%;padding:5px 0 10px;font-weight:700}}.mec-timetable-t2-wrap{border:1px solid #e6e6e6;background:#fafafa;padding:0 15px 15px;overflow:hidden;box-shadow:0 3px 2px 0 rgba(0,0,0,.012)}.mec-timetable-t2-col{width:20%;float:left;min-height:20px;padding-right:1px;background:0 0}.mec-ttt2-title{background:#fafafa;color:#333;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:1px;text-align:center;padding:25px 10px 10px;margin-bottom:1px}.mec-timetable-t2-col .mec-event-article{position:relative}.mec-timetable-t2-col .mec-event-article .event-color{position:absolute;width:auto;height:auto;left:0;right:0;top:0;bottom:0;margin:0;z-index:1;border-radius:2px}.mec-timetable-t2-content{position:relative;z-index:2;color:#fff;padding:15px 15px 20px;text-align:left;height:130px;margin-bottom:1px;overflow:hidden}.mec-timetable-t2-content .mec-event-title{line-height:22px;margin-bottom:13px;white-space:nowrap;padding-right:1px;overflow:hidden}.mec-timetable-t2-content .mec-event-title a{color:#fff;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden}.mec-timetable-t2-content div{color:#fff;font-size:11px;font-weight:400;line-height:19px;white-space:nowrap}.mec-timetable-t2-content div i{font-size:12px;margin-right:4px}@media only screen and (max-width:960px){.mec-timetable-t2-col{width:100%;float:none}}@media(min-width:961px){.mec-timetable-col-7{width:14.28%}.mec-timetable-col-6{width:16.6666%}}.mec-weather-box{padding:15px 0}.mec-weather-head{min-height:90px;padding:5px 0;clear:both;overflow:hidden;margin-bottom:25px;border-radius:10px;background:#238af5;position:relative}.mec-weather-icon-box{float:left;width:80px;height:80px;border-radius:10px;overflow:hidden;background:#238af5}.mec-weather-icon{width:80px;height:80px;display:inline-block;border-radius:10px}.mec-weather-summary{float:left;width:calc(100% - 80px);padding-left:10px;margin:10px 0;height:60px}.mec-weather-summary-report{font-size:15px;color:rgba(255,255,255,.68);margin-bottom:6px}.mec-weather-summary-temp{font-family:Roboto,Sans-serif;font-weight:300;color:#fff;font-size:29px;line-height:1}.degrees-mode{background:rgba(0,0,0,.2);cursor:pointer;font-weight:300;font-size:18px;padding:4px 5px;line-height:1;color:#fff;position:absolute;border-radius:8px;bottom:16px;left:16px}.mec-weather-extras{width:auto;padding:10px 15px 0 15px;float:right;min-height:80px;color:#fff;font-size:13px;line-height:1}.mec-weather-extras{width:auto;padding:10px 15px 0 15px;float:right;min-height:80px;color:#fff;font-size:13px;line-height:1}.mec-weather-extras div{line-height:20px;height:20px}.mec-weather-extras span{color:rgba(255,255,255,.68);font-size:12px;text-transform:uppercase}.mec-weather-extras var{font-size:11px;letter-spacing:.4px}.mec-weather-icon.clear-day,.mec-weather-icon.clear-night{background-image:url(../img/mec-weather-icon-01.png)}.mec-weather-icon.partly-sunny-day,.mec-weather-icon.partly-sunny-night{background-image:url(../img/mec-weather-icon-02.png)}.mec-weather-icon.partly-cloudy-day,.mec-weather-icon.partly-cloudy-night{background-image:url(../img/mec-weather-icon-03.png)}.mec-weather-icon.cloudy,.mec-weather-icon.fog,.mec-weather-icon.wind{background-image:url(../img/mec-weather-icon-04.png)}.mec-weather-icon.thunderstorm{background-image:url(../img/mec-weather-icon-05.png)}.mec-weather-icon.rain{background-image:url(../img/mec-weather-icon-06.png)}.mec-weather-icon.hail,.mec-weather-icon.sleet,.mec-weather-icon.snow{background-image:url(../img/mec-weather-icon-07.png)}.mec-av-spot-wrap{width:auto;max-width:1200px;padding:0;margin:0 auto 25px;background:#f7f7f7;min-height:480px;position:relative}.mec-av-spot{height:auto;border:1px solid #eee;box-shadow:0 6px 12px -4px rgba(0,0,0,.05)}.mec-av-spot .mec-event-article{position:relative;height:auto}.mec-av-spot .mec-av-spot-img{position:relative;background-size:cover!important;background-position:center!important;width:100%;height:330px;float:none;margin:0;overflow:hidden}.mec-av-spot .mec-av-spot-content,.mec-av-spot .mec-av-spot-head{width:100%;float:none;height:100%;background:#fff;padding:0 20px 20px;margin-bottom:0}.mec-av-spot .mec-av-spot-head{background:#222;color:#fff;min-height:80px}.mec-av-spot .mec-av-spot-head .mec-av-spot-box{padding-top:25px;font-size:13px;color:#ddd}.mec-av-spot .mec-av-spot-head .mec-av-spot-box span{color:#40d9f1;font-size:40px;font-weight:700;font-style:italic}.mec-av-spot .mec-av-spot-head .mec-event-countdown{text-align:center;padding-top:10px;display:table;table-layout:fixed;margin:0 auto;float:right}.mec-av-spot .mec-av-spot-head .mec-event-countdown li{display:table-cell;padding:10px 20px;position:relative;height:60px}.mec-av-spot .mec-av-spot-head .mec-event-countdown p{margin-bottom:0}.mec-av-spot .mec-events-content p{margin-bottom:20px}.mec-av-spot-content.mec-event-grid-modern .mec-event-article{border:none;padding:0;margin:0;box-shadow:none}.mec-av-spot-wrap .mec-event-grid-modern .event-grid-modern-head{margin-bottom:10px;padding:14px 34px;margin-left:-20px;margin-right:-20px;text-align:left;background:#f9f9f9;border-bottom:1px solid #eee}.mec-av-spot-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-av-spot .mec-av-spot-col6{width:50%;float:left;height:100%}.mec-av-spot .mec-av-spot-col6 i{font-size:42px;float:left;margin-right:7px;height:58px}.mec-av-spot .mec-av-spot-col6 h6{text-transform:uppercase;font-size:17px;padding:4px 0;display:inline;color:#444}.mec-av-spot .mec-av-spot-col6 address{font-size:12px;margin-bottom:0}.mec-av-spot-content.mec-event-grid-modern .mec-event-title a:hover{text-decoration:underline}.mec-av-spot-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px;top:0;box-shadow:0 5px 11px -3px rgba(0,0,0,.05)}@media only screen and (max-width:768px){.mec-av-spot .mec-av-spot-col6{width:100%;margin:10px 0}}@media only screen and (max-width:479px){.mec-av-spot-content.mec-event-grid-modern .mec-event-title{font-size:24px}}.mec-events-masonry-wrap{display:block;width:auto}.mec-masonry-item-wrap{width:calc(33.33% - 30px);padding:0;margin:0 15px 30px;min-height:10px;position:relative}.isotope-item{z-index:2}.isotope-hidden.isotope-item{pointer-events:none;z-index:1}.isotope,.isotope .isotope-item{-webkit-transition-duration:.8s;-moz-transition-duration:.8s;transition-duration:.8s}.isotope{-webkit-transition-property:height,width;-moz-transition-property:height,width;transition-property:height,width}.isotope .isotope-item{-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;transition-property:transform,opacity}.mec-events-masonry-cats{padding:10px;margin-bottom:25px;text-align:center;clear:both;list-style:none outside none}.mec-events-masonry-cats a{border-radius:2px;padding:6px 12px;font-size:13px;line-height:1.2;color:#333;font-weight:400;margin-top:0!important;text-align:center;display:inline-block;width:auto;border:2px solid transparent;transition:all .2s ease}.mec-events-masonry-cats a:hover{border-color:#40d9f1;color:#333}.mec-events-masonry-cats a.mec-masonry-cat-selected{border:2px solid #40d9f1;color:#40d9f1}.mec-masonry{background:#f7f7f7;height:auto;border:1px solid #eee;box-shadow:0 6px 12px -4px rgba(0,0,0,.05)}.mec-masonry .mec-event-article{position:relative;height:auto}.mec-masonry .mec-masonry-img{position:relative;width:100%;height:auto;float:none;margin:0;overflow:hidden}.mec-masonry .mec-masonry-img img{width:100%}.mec-masonry .mec-masonry-content,.mec-masonry .mec-masonry-head{width:100%;float:none;height:100%;background:#fff;padding:0 20px 20px;margin-bottom:0}.mec-masonry .mec-events-content p{margin-bottom:20px}.mec-masonry-content.mec-event-grid-modern .mec-event-article{border:none;padding:0;margin:0;box-shadow:none}.mec-masonry-item-wrap .mec-event-grid-modern .event-grid-modern-head{min-height:79px;margin-bottom:10px;padding:14px 5%;margin-left:-20px;margin-right:-20px;text-align:left;background:#f9f9f9;border-bottom:1px solid #eee}.mec-masonry-content.mec-event-grid-modern .mec-event-title{font-size:22px}.mec-masonry-content.mec-event-grid-modern .mec-event-content{padding-top:20px}.mec-masonry-content.mec-event-grid-modern .mec-event-footer{height:auto}.mec-masonry .mec-masonry-col6 .mec-event-date{font-size:34px;letter-spacing:-2px}.mec-masonry .mec-masonry-col6{width:50%;float:left;height:100%}.mec-masonry .mec-masonry-col6 i{font-size:24px;float:left;margin-right:7px;height:50px}.mec-masonry .mec-masonry-col6 .mec-event-month,.mec-masonry .mec-masonry-col6 h6{text-transform:capitalize;font-size:15px;padding:4px 0;display:inline;color:#444}.mec-masonry .mec-masonry-col6 .mec-event-detail,.mec-masonry .mec-masonry-col6 address{font-size:11px;margin-bottom:0}.mec-masonry-content.mec-event-grid-modern .mec-event-title a:hover{text-decoration:underline}.mec-masonry-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px;top:0;box-shadow:0 5px 11px -3px rgba(0,0,0,.05)}@media only screen and (max-width:960px){.mec-masonry-item-wrap{width:calc(50% - 30px)}}@media only screen and (max-width:768px){.mec-masonry .mec-masonry-col6{width:100%;margin:10px 0}.mec-masonry-item-wrap{width:calc(100% - 30px)}}@media only screen and (max-width:479px){.mec-masonry-content.mec-event-grid-modern .mec-event-title{font-size:24px}}.btn-wrapper{text-align:center}.countdown-wrapper .btn-wrapper{padding-top:10px;padding-right:0}.countdown-wrapper h5.countdown-message{letter-spacing:5px;font-weight:500;font-size:18px}.blox.dar .countdown-wrapper p,.countdown-wrapper p{color:#888}.countdown-wrapper a.button.black{float:right;margin-right:0}.mec-wrap .threedaydigits .days .flip-clock-label{right:-100px}@media only screen and (min-width:320px) and (max-width:767px){.mec-wrap .flip-clock-wrapper ul{width:29px!important}.mec-wrap .flip-clock-wrapper ul li a div div.inn{font-size:25px!important}.mec-wrap .flip-clock-divider .flip-clock-label{left:0;font-weight:300}.mec-wrap span.flip-clock-divider{width:12px}}@media only screen and (min-width:320px) and (max-width:480px){.mec-wrap .flip-clock-wrapper ul{width:29px!important}.mec-wrap .flip-clock-wrapper ul li a div div.inn{font-size:25px!important}.mec-wrap .flip-clock-divider .flip-clock-label{display:none}.mec-wrap span.flip-clock-divider:first-child{width:0}.mec-wrap span.flip-clock-divider{width:20px}.mec-single-event .mec-events-meta-group-countdown{margin-left:10%}}@media screen and (min-width:960px) and (max-width:1200px){.mec-wrap .threedaydigits ul{height:50px;width:47px}}@media screen and (min-width:480px) and (max-width:768px){.mec-wrap .threedaydigits ul{height:48px;width:26px!important}.mec-wrap .threedaydigits .flip-clock-label{font-size:8px;left:-8px}}@media screen and (min-width:320px) and (max-width:480px){.mec-wrap .threedaydigits ul{height:48px;width:22px!important}}.mec-wrap .flip-clock-wrapper *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden}.mec-wrap .flip-clock-wrapper a{cursor:pointer;text-decoration:none;color:#ccc}.mec-wrap .flip-clock-wrapper a:hover{color:#fff}.mec-wrap .flip-clock-wrapper ul{list-style:none}.flip-clock-wrapper.clearfix:after,.mec-wrap .flip-clock-wrapper.clearfix:before{content:" ";display:table}.mec-wrap .flip-clock-wrapper.clearfix:after{clear:both}.mec-wrap .flip-clock-wrapper{font:normal 11px "helvetica neue",helvetica,sans-serif;-webkit-user-select:none}.mec-wrap .flip-clock-meridium{background:0 0!important;box-shadow:0 0 0!important;font-size:36px!important}.mec-wrap .flip-clock-meridium a{color:#313333}.mec-wrap .flip-clock-wrapper{text-align:center;position:relative;display:inline-block;padding-bottom:10px}.flip-clock-wrapper:after,.mec-wrap .flip-clock-wrapper:before{content:" ";display:table}.mec-wrap .flip-clock-wrapper:after{clear:both}.mec-wrap .flip-clock-wrapper ul{position:relative;float:left;margin:2px;width:50px;height:50px;font-size:80px;font-weight:700;line-height:87px;border-radius:3px;background:rgba(0,0,0,.21)}.mec-wrap .flip-clock-wrapper ul li{z-index:1;position:absolute;left:0;top:0;width:100%;height:100%;line-height:54px;text-decoration:none!important}.mec-wrap .flip-clock-wrapper ul li:first-child{z-index:2}.mec-wrap .flip-clock-wrapper ul li a{display:block;height:100%;-webkit-perspective:200px;-moz-perspective:200px;perspective:200px;margin:0!important;overflow:visible!important;cursor:default!important}.mec-wrap .flip-clock-wrapper ul li a div{z-index:1;position:absolute;left:0;width:100%;height:50%;font-size:80px;overflow:hidden;outline:1px solid transparent}.mec-wrap .flip-clock-wrapper ul li a div .shadow{position:absolute;width:100%;height:100%;z-index:2}.mec-wrap .flip-clock-wrapper ul li a div.up{-webkit-transform-origin:50% 100%;-moz-transform-origin:50% 100%;-ms-transform-origin:50% 100%;-o-transform-origin:50% 100%;transform-origin:50% 100%;top:0}.mec-wrap .flip-clock-wrapper ul li a div.up:after{content:"";position:absolute;top:24px;left:0;z-index:5;width:100%;height:3px;background-color:rgba(0,0,0,.12)}.mec-wrap .flip-clock-wrapper ul li a div.down{-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;-o-transform-origin:50% 0;transform-origin:50% 0;bottom:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.mec-wrap .flip-clock-wrapper ul li a div div.inn{position:absolute;left:0;z-index:1;width:100%;height:200%;color:#fff;text-shadow:0 0 2px rgba(0,0,0,.25);text-align:center;background-color:#40d9f1;border-radius:3px;font-size:48px}.mec-wrap .flip-clock-wrapper ul li a div.up div.inn{top:0}.mec-wrap .flip-clock-wrapper ul li a div.down div.inn{bottom:0}.mec-wrap .flip-clock-wrapper ul.play li.flip-clock-before{z-index:3}.mec-wrap .flip-clock-wrapper .flip{box-shadow:0 2px 5px rgba(0,0,0,.17)}.mec-wrap .flip-clock-wrapper ul.play li.flip-clock-active{-webkit-animation:asd .5s .5s linear both;-moz-animation:asd .5s .5s linear both;animation:asd .5s .5s linear both;z-index:5}.mec-wrap .flip-clock-divider{float:left;display:inline-block;position:relative;width:18px;height:62px}.mec-wrap .flip-clock-divider:first-child{width:0}.mec-wrap .flip-clock-dot{display:none;background:#323434;width:10px;height:10px;position:absolute;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);left:5px}.mec-wrap .flip-clock-divider .flip-clock-label{position:absolute;bottom:-1.5em;right:-71px;color:#101010;font-weight:700;text-shadow:none;text-transform:uppercase}.mec-wrap .blox.dark .flip-clock-divider .flip-clock-label{color:#8a8a8a}.mec-wrap .flip-clock-divider.seconds .flip-clock-label{right:-82px}.mec-wrap .flip-clock-dot.top{top:30px}.mec-wrap .flip-clock-dot.bottom{bottom:30px}@-webkit-keyframes asd{0%{z-index:2}20%{z-index:4}100%{z-index:4}}@-moz-keyframes asd{0%{z-index:2}20%{z-index:4}100%{z-index:4}}@-o-keyframes asd{0%{z-index:2}20%{z-index:4}100%{z-index:4}}@keyframes asd{0%{z-index:2}20%{z-index:4}100%{z-index:4}}.flip-clock-wrapper ul.play li.flip-clock-active .down{z-index:2;-webkit-animation:turn .5s .5s linear both;-moz-animation:turn .5s .5s linear both;animation:turn .5s .5s linear both}@-webkit-keyframes turn{0%{-webkit-transform:rotatex(90deg)}100%{-webkit-transform:rotatex(0)}}@-moz-keyframes turn{0%{-moz-transform:rotatex(90deg)}100%{-moz-transform:rotatex(0)}}@-o-keyframes turn{0%{-o-transform:rotatex(90deg)}100%{-o-transform:rotatex(0)}}@keyframes turn{0%{transform:rotatex(90deg)}100%{transform:rotatex(0)}}.flip-clock-wrapper ul.play li.flip-clock-before .up{z-index:2;-webkit-animation:turn2 .5s linear both;-moz-animation:turn2 .5s linear both;animation:turn2 .5s linear both}@-webkit-keyframes turn2{0%{-webkit-transform:rotatex(0)}100%{-webkit-transform:rotatex(-90deg)}}@-moz-keyframes turn2{0%{-moz-transform:rotatex(0)}100%{-moz-transform:rotatex(-90deg)}}@-o-keyframes turn2{0%{-o-transform:rotatex(0)}100%{-o-transform:rotatex(-90deg)}}@keyframes turn2{0%{transform:rotatex(0)}100%{transform:rotatex(-90deg)}}.flip-clock-wrapper ul li.flip-clock-active{z-index:3}.flip-clock-wrapper ul.play li.flip-clock-before .up .shadow{background:-moz-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,.1)),color-stop(100%,rgba(64,64,64,.68)));background:linear,top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%;background:-o-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:-ms-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:linear,to bottom,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%;-webkit-animation:show .5s linear both;-moz-animation:show .5s linear both;animation:show .5s linear both}.flip-clock-wrapper ul.play li.flip-clock-active .up .shadow{background:-moz-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,.1)),color-stop(100%,rgba(64,64,64,.68)));background:linear,top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%;background:-o-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:-ms-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:linear,to bottom,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%;-webkit-animation:hide .5s .3s linear both;-moz-animation:hide .5s .3s linear both;animation:hide .5s .3s linear both}.flip-clock-wrapper ul.play li.flip-clock-before .down .shadow{background:-moz-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(64,64,64,.68)),color-stop(100%,rgba(0,0,0,.1)));background:linear,top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%;background:-o-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:-ms-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:linear,to bottom,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%;-webkit-animation:show .5s linear both;-moz-animation:show .5s linear both;animation:show .5s linear both}.flip-clock-wrapper ul.play li.flip-clock-active .down .shadow{background:-moz-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(64,64,64,.68)),color-stop(100%,rgba(0,0,0,.1)));background:linear,top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%;background:-o-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:-ms-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:linear,to bottom,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%;-webkit-animation:hide .5s .3s linear both;-moz-animation:hide .5s .3s linear both;animation:hide .5s .2s linear both}@-webkit-keyframes show{0%{opacity:0}100%{opacity:1}}@-moz-keyframes show{0%{opacity:0}100%{opacity:1}}@-o-keyframes show{0%{opacity:0}100%{opacity:1}}@keyframes show{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes hide{0%{opacity:1}100%{opacity:0}}@-moz-keyframes hide{0%{opacity:1}100%{opacity:0}}@-o-keyframes hide{0%{opacity:1}100%{opacity:0}}@keyframes hide{0%{opacity:1}100%{opacity:0}}@font-face{font-family:simple-line-icons;src:url(../fonts/Simple-Line-Icons.eot?v=2.3.1);src:url(../fonts/Simple-Line-Icons.eot?v=2.3.1#iefix) format('embedded-opentype'),url(../fonts/Simple-Line-Icons.woff2?v=2.3.1) format('woff2'),url(../fonts/Simple-Line-Icons.woff?v=2.3.1) format('woff'),url(../fonts/Simple-Line-Icons.ttf?v=2.3.1) format('truetype'),url(../fonts/Simple-Line-Icons.svg?v=2.3.1#simple-line-icons) format('svg');font-weight:400;font-style:normal}[class*=mec-sl-]{font-family:simple-line-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mec-sl-facebook:before{content:"\e00b"}.mec-sl-twitter:before{content:"\e009"}.mec-sl-google-plus:before{content:"\e60d"}.mec-sl-angle-left:before{content:"\e605"}.mec-sl-angle-right:before{content:"\e606"}.mec-sl-calendar:before{content:"\e075"}.mec-sl-clock-o:before{content:"\e081"}.mec-sl-home:before{content:"\e069"}.mec-sl-phone:before{content:"\e600"}.mec-sl-envelope:before{content:"\e086"}.mec-sl-sitemap:before{content:"\e037"}.mec-sl-map-marker:before{content:"\e096"}.mec-sl-floder:before{content:"\e089"}.mec-sl-wallet:before{content:"\e02a"}.mec-color,.mec-color-before :before,.mec-color-hover:hover,.mec-wrap .mec-color,.mec-wrap .mec-color-before :before,.mec-wrap .mec-color-hover:hover{color:#40d9f1}.mec-bg-color,.mec-bg-color-hover:hover,.mec-wrap .mec-bg-color,.mec-wrap .mec-bg-color-hover:hover{background-color:#40d9f1}.mec-border-color,.mec-border-color-hover:hover,.mec-wrap .mec-border-color,.mec-wrap .mec-border-color-hover:hover{border-color:#40d9f1}.mec-toggle-month-divider.mec-skin-list-events-container{border:1px solid #e8e8e8;margin-bottom:30px;background:#f8f8f8;box-shadow:0 2px 18px -1px rgba(0,0,0,.1);border-radius:2px}.mec-toggle-month-divider .mec-month-divider{margin:0;text-align:left;background:#fff;position:relative;cursor:pointer;border-top:1px solid #e8e8e8}.mec-toggle-month-divider .mec-month-divider span{padding:20px;border-bottom:1px solid #e8e8e8}.mec-toggle-month-divider .mec-month-divider i{position:absolute;right:20px;top:24px;font-size:20px;cursor:pointer}.mec-toggle-month-divider .mec-month-divider span:before{display:none}.mec-toggle-month-divider .mec-month-divider+article{margin-top:20px}.mec-toggle-month-divider .mec-wrap .mec-month-divider:first-of-type{border-top:none}.mec-toggle-month-divider .mec-event-list-accordion .mec-month-divider:not(:first-of-type)~article{display:none}.mec-skin-list-events-container:not(.mec-toggle-month-divider) .mec-month-divider i{display:none}.mec-toogle-inner-month-divider .mec-toggle-item-col .mec-event-month{display:inline-block;padding-top:0}.mec-toogle-inner-month-divider .mec-toggle-item-col .mec-event-date{font-size:14px;line-height:14px;float:none;display:inline-block;margin-right:0;font-weight:700}.mec-events-toggle .mec-toogle-inner-month-divider.mec-toggle-item-inner{padding:20px 60px 30px 15px}.mec-toogle-inner-month-divider .mec-toggle-month-inner-image{float:left;clear:right;width:100px;margin-right:20px;margin-left:10px}.mec-toogle-inner-month-divider .mec-toggle-item-col .mec-event-detail{margin-top:-6px}.mec-toogle-inner-month-divider .mec-toggle-item-col{float:none;width:100%;margin-top:10px;display:block;border:none}.mec-events-toggle .mec-toogle-inner-month-divider .mec-toggle-title{font-size:19px;display:block;padding-top:10px}@media only screen and (max-width:768px){.mec-events-toggle .mec-toogle-inner-month-divider .mec-toggle-title{font-size:14px;padding-top:0}.mec-toogle-inner-month-divider .mec-toggle-item-col{margin-top:0}.mec-toogle-inner-month-divider .mec-toggle-month-inner-image{width:70px}}.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-canceled:before,.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-featured:before{z-index:1;position:absolute;top:25px;right:-37px;font-size:11px;letter-spacing:1px;text-transform:uppercase;background:#04de78;padding:2px 40px;color:#fff;-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transition:.5s cubic-bezier(.25,.5,.06,.85);transition:.5s cubic-bezier(.25,.5,.06,.85);content:attr(data-style)}.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-canceled,.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-featured{overflow:hidden;position:relative}.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-canceled:before{background:#de0404}.mec-daily-view-date-events article:before,ul.mec-weekly-view-dates-events article:before{padding:7px 40px!important;top:27px!important}.mec-event-grid-classic article .mec-fc-style,.mec-event-grid-minimal article .mec-fc-style,.mec-event-grid-simple article .mec-fc-style,.mec-timetable-wrap article .mec-fc-style,.mec-wrap .mec-event-list-accordion article .mec-fc-style,.mec-wrap .mec-event-list-modern article .mec-fc-style,.mec-wrap .mec-events-agenda .mec-agenda-event .mec-fc-style,.mec-wrap article.mec-event-cover-classic .mec-fc-style,.mec-wrap article.mec-event-cover-clean .mec-fc-style,.mec-wrap article.mec-event-cover-modern .mec-fc-style,.mec-wrap article[class^=mec-event-countdown-] .mec-fc-style{font-size:9px;letter-spacing:.5px;text-transform:uppercase;background:#04de78;padding:2px 7px;color:#fff;position:relative;margin-left:5px;border-radius:2px}.mec-wrap .mec-events-agenda .mec-agenda-event.mec-label-canceled .mec-fc-style,.mec-wrap article.mec-event-cover-modern.mec-label-canceled .mec-fc-style{background:#de0404}.mec-event-grid-minimal article .mec-fc-style:before,.mec-event-grid-simple article .mec-fc-style:before,.mec-timetable-wrap article .mec-fc-style:before,.mec-wrap .mec-event-list-accordion article .mec-fc-style:before,.mec-wrap .mec-event-list-modern article .mec-fc-style:before,.mec-wrap .mec-events-agenda .mec-agenda-event .mec-fc-style:before,.mec-wrap article.mec-event-cover-classic .mec-fc-style:before,.mec-wrap article.mec-event-cover-clean .mec-fc-style:before,.mec-wrap article[class^=mec-event-countdown-] .mec-fc-style:before{width:0;height:0;border-top:4px solid transparent!important;border-right:5px solid;border-bottom:4px solid transparent;margin:0;top:50%;left:-4px;transform:translateY(-4.5px);position:absolute;content:'';color:#04de78}.mec-wrap .mec-events-agenda .mec-agenda-event.mec-label-canceled .mec-fc-style:before{color:#de0404}.mec-event-grid-classic article.mec-label-canceled:before,.mec-event-grid-classic article.mec-label-featured:before,.mec-event-grid-minimal article.mec-label-canceled:before,.mec-event-grid-minimal article.mec-label-featured:before,.mec-event-grid-simple article.mec-label-canceled:before,.mec-event-grid-simple article.mec-label-featured:before,.mec-timetable-wrap article.mec-label-canceled:before,.mec-timetable-wrap article.mec-label-featured:before,.mec-wrap .mec-event-list-accordion article.mec-label-canceled:before,.mec-wrap .mec-event-list-accordion article.mec-label-featured:before,.mec-wrap .mec-event-list-modern article.mec-label-canceled:before,.mec-wrap .mec-event-list-modern article.mec-label-featured:before{display:none}.mec-wrap .mec-event-list-accordion article .mec-fc-style,.mec-wrap .mec-event-list-modern article .mec-fc-style,.mec-wrap article.mec-event-cover-classic .mec-fc-style,.mec-wrap article.mec-event-cover-clean .mec-fc-style,.mec-wrap article[class^=mec-event-countdown-] .mec-fc-style{top:-3px;font-size:11px;margin-left:10px}.mec-event-grid-classic article.mec-label-canceled .mec-fc-style,.mec-event-grid-minimal article.mec-label-canceled .mec-fc-style,.mec-event-grid-simple article.mec-label-canceled .mec-fc-style,.mec-timetable-wrap article.mec-label-canceled .mec-fc-style,.mec-wrap .mec-event-list-accordion article.mec-label-canceled .mec-fc-style,.mec-wrap .mec-event-list-modern article.mec-label-canceled .mec-fc-style,.mec-wrap article.mec-event-cover-classic.mec-label-canceled .mec-fc-style,.mec-wrap article.mec-event-cover-clean.mec-label-canceled .mec-fc-style,.mec-wrap article[class^=mec-event-countdown-].mec-label-canceled .mec-fc-style{background:#de0404}.mec-event-grid-classic article.mec-label-canceled .mec-fc-style:before,.mec-event-grid-minimal article.mec-label-canceled .mec-fc-style:before,.mec-event-grid-simple article.mec-label-canceled .mec-fc-style:before,.mec-timetable-wrap article.mec-label-canceled .mec-fc-style:before,.mec-wrap .mec-event-list-accordion article.mec-label-canceled .mec-fc-style:before,.mec-wrap .mec-event-list-modern article.mec-label-canceled .mec-fc-style:before,.mec-wrap article.mec-event-cover-classic.mec-label-canceled .mec-fc-style:before,.mec-wrap article.mec-event-cover-clean.mec-label-canceled .mec-fc-style:before,.mec-wrap article[class^=mec-event-countdown-].mec-label-canceled .mec-fc-style:before{color:#de0404}.mec-wrap .mec-slider-t5 article:not([class^=mec-event-countdown]).mec-label-canceled:before,.mec-wrap .mec-slider-t5 article:not([class^=mec-event-countdown]).mec-label-featured:before{-ms-transform:none;-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;top:271px;right:0}.mec-timetable-wrap article .mec-fc-style{top:-2px;font-size:10px}.mec-wrap article.mec-event-cover-modern .mec-fc-style{padding:5px 9px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-bottom:24px;display:inline-block;border-radius:2px}.mec-skin-grid-events-container .mec-wrap .mec-event-grid-clean .mec-event-article:before{-ms-transform:none;-webkit-transform:none;transform:none!important;-webkit-transition:none;transition:none;top:22px!important;right:22px!important;padding:0 10px!important}.mec-event-grid-minimal article .mec-fc-style,.mec-event-grid-simple article .mec-fc-style{top:-4px;font-size:10px;margin-left:10px}.mec-event-grid-classic article .mec-fc-style{padding:5px 20px;font-size:12px;margin-top:8px;display:inline-block}.mec-hourly-schedule-speaker-info{background:#fff;padding:30px;border:1px solid #e6e6e6;max-width:740px;width:740px;margin-left:-110px}.mec-hourly-schedule-speaker-thumbnail{float:left;max-width:30%;width:30%}.mec-hourly-schedule-speaker-name{font-weight:700;font-size:26px;line-height:1.2;color:#333;text-transform:uppercase}.mec-hourly-schedule-speaker-details{float:left;width:69%;padding-left:25px}.mec-hourly-schedule-speaker-job-title{font-size:16px;line-height:1.3;margin-bottom:4px}.mec-hourly-schedule-speaker-description{font-size:14px;font-weight:400;color:#6d7683;line-height:1.7;text-align:left}.mec-hourly-schedule-speaker-contact-information a i{color:#6b6b6b;background:#ebebeb;line-height:29px;margin:9px 7px 9px 0;width:30px;height:30px;display:inline-block;text-align:center;transition:all .2s ease;font-size:15px;cursor:pointer}.mec-hourly-schedule-speaker-contact-information a i:hover{background:#222;color:#fff}@media only screen and (max-width:479px){.mec-hourly-schedule-speaker-thumbnail{float:none;max-width:none;margin-right:0;margin-bottom:15px;width:100%}.mec-hourly-schedule-speaker-thumbnail img{width:100%}.mec-hourly-schedule-speaker-details{padding-left:0}.mec-hourly-schedule-speaker-info{width:90%;margin:0 auto}}.mec-profile .mec-profile-bookings{border:2px solid #e6e6e6;text-align:center}.mec-profile .mec-profile-bookings tbody tr:first-child{background:#f7f7f7;font-weight:700;text-transform:capitalize}.mec-profile .mec-profile-bookings tbody tr{border-bottom:1px solid #e6e6e6;font-size:14px}.mec-profile .mec-profile-bookings tbody tr td{border:1px solid #e6e6e6;padding:10px}.mec-profile .mec-profile-bookings tbody tr td:nth-child(1){width:4%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(2){width:37%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(3){width:24%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(4){width:15%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(5){width:10%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(6){width:10%}.mec-profile .mec-event-status{padding:5px 10px;color:#fff;border-radius:2px;font-size:12px;line-height:12px;letter-spacing:.4px}.mec-profile .mec-event-status.mec-book-confirmed{background:#50d477}.mec-profile .mec-event-status.mec-book-pending{background:#fcbe69}.mec-profile .mec-event-status.mec-book-rejected{background:#fe686a}.mec-profile .mec-event-date{font-size:12px;color:#888}.mec-profile .mec-booking-number-of-attendees{font-size:13px;color:#888}.mec-profile .mec-booking-number-of-attendees i,.mec-profile .mec-profile-bookings-view-invoice i{font-size:15px;color:#008aff;vertical-align:text-bottom;margin-right:4px}.mec-booking-attendees{background:#fff;padding:10px}.mec-booking-attendees{width:750px;text-align:center}.mec-booking-attendees-wrapper{border:2px solid #e6e6e6;font-size:14px}.mec-booking-attendees-head{display:table;width:100%;background:#f7f7f7;border-bottom:1px solid #e6e6e6;font-weight:700}.mec-booking-attendees-head span,.mec-booking-attendees-head-content>span{vertical-align:middle;display:table-cell;padding:7px;border-right:1px solid #e6e6e6}.mec-booking-attendees-head-content{display:table;width:100%;border-bottom:1px solid #e6e6e6}.mec-booking-attendees-wrapper .mec-booking-attendees-head-content:last-child{border:none}.mec-booking-attendees-head span:nth-child(1),.mec-booking-attendees-head-content>span:nth-child(1){width:4%}.mec-booking-attendees-head span:nth-child(2),.mec-booking-attendees-head-content>span:nth-child(2){width:20%}.mec-booking-attendees-head span:nth-child(3),.mec-booking-attendees-head-content>span:nth-child(3){width:24%}.mec-booking-attendees-head span:nth-child(4),.mec-booking-attendees-head-content>span:nth-child(4){width:26%}.mec-booking-attendees-head span:nth-child(5),.mec-booking-attendees-head-content>span:nth-child(5){width:26%}@media only screen and (max-width:759px){.mec-booking-attendees{width:470px}.mec-booking-attendees-head span,.mec-booking-attendees-head-content>span{word-break:break-all}}.mec-woo-booking-checkout{position:relative;border:none;border-radius:0;color:#fff;display:inline-block;font-size:12px;letter-spacing:1px;line-height:1.5;text-transform:uppercase;font-weight:600;text-decoration:none;cursor:pointer;margin-bottom:21px;margin-right:10px;line-height:1;padding:18px 20px 16px;background:#39c36e;-webkit-transition:all .21s ease;-moz-transition:all .21s ease;transition:all .21s ease;border-radius:0;margin-bottom:6px;min-width:170px;margin-top:5px;text-align:center}.mec-woo-booking-checkout:hover{background:#222;color:#fff}.mec-woo-booking-checkout:focus,.mec-woo-booking-checkout:visited{color:#fff}.single-mec-events .lity-container{max-width:480px;width:480px}.lity-content .mec-events-meta-group-booking{width:100%;padding:20px 50px;background:#fff}.lity-content .mec-events-meta-group-booking .mec-booking form>h4{text-transform:uppercase;font-size:15px;font-weight:700;color:#313131;border-bottom:4px solid #ebebeb;width:100%;display:block;padding-bottom:10px;position:relative;text-align:center;line-height:1.2;margin-bottom:10px}.lity-content .mec-events-meta-group-booking .mec-booking form>h4:before{padding:1px 35px;border-bottom:4px solid #40d9f1;font-size:6px;content:"";text-align:center;position:absolute;bottom:-4px;margin-left:-35px;left:50%}.lity-content .mec-events-meta-group-booking .mec-event-ticket-available,.lity-content .mec-events-meta-group-booking .mec-event-ticket-name,.lity-content .mec-events-meta-group-booking .mec-event-ticket-price,.lity-content .mec-events-meta-group-booking .mec-ticket-variation-name,.lity-content .mec-events-meta-group-booking .mec-ticket-variation-price,.lity-content .mec-events-meta-group-booking label{color:#424242;font-size:12px;font-weight:300;letter-spacing:0;margin:3px 0;clear:none;padding:5px 1em 3px 0;display:inline-block}.lity-content .mec-events-meta-group-booking .mec-event-ticket-available{margin-bottom:12px}.lity-content .mec-events-meta-group-booking select{display:block;background:#fcfcfc;min-height:42px;min-width:180px;font-size:13px;border:1px solid #e0e0e0;padding:13px 10px;width:100%;margin-bottom:20px;box-shadow:inset 0 2px 4px rgba(0,0,0,.051);clear:both;font-family:Montserrat,Helvetica,Arial,sans-serif}.lity-content .mec-events-meta-group-booking input[type=email]{color:#888;border:1px solid #e1e1e1;font-size:14px;display:block;width:100%;outline:0}.lity-content .mec-events-meta-group-booking input{margin-bottom:10px!important}.lity-content .mec-book-ticket-variation h5{color:#424242;font-size:12px;font-weight:300;letter-spacing:0;margin:0;clear:none;padding:5px 1em 3px 0;display:inline-block;text-transform:capitalize;font-family:Montserrat,Helvetica,Arial,sans-serif}.lity-content ul.mec-book-tickets-container{padding:0}.lity-content .mec-events-meta-group-booking input[type=email],.lity-content .mec-events-meta-group-booking input[type=number],.lity-content .mec-events-meta-group-booking input[type=text]{outline:0;font-family:Montserrat,Helvetica,Arial,sans-serif;display:block;background:#fcfcfc;min-height:42px;min-width:180px;font-size:13px;border:1px solid #e0e0e0;padding:13px 10px;width:100%;margin-bottom:20px;box-shadow:inset 0 2px 4px rgba(0,0,0,.051);clear:both;margin-bottom:2px!important}.lity-content button[type=submit]{position:relative;border:none;color:#fff;display:inline-block;font-size:12px;letter-spacing:1px;text-transform:uppercase;font-weight:600;text-decoration:none;cursor:pointer;margin-right:10px;line-height:1;padding:18px 20px 16px;background:#39c36e;-webkit-transition:all .21s ease;-moz-transition:all .21s ease;transition:all .21s ease;min-width:170px;margin-top:5px;border-radius:0;margin-bottom:6px}.lity-content button[type=submit]:hover{background:#222}.lity-content .mec-book-tickets-container li{list-style:none}.lity-content .mec-events-meta-group-booking #mec_book_payment_form h4,.lity-content .mec-events-meta-group-booking li h4{font-size:19px;font-weight:700}.lity-content .mec-events-meta-group-booking .mec-book-price-total{display:inline-block;margin-bottom:10px;font-size:26px;color:#39c36e;font-weight:700;padding:10px 0}.lity-content .mec-events-meta-group-booking ul.mec-book-price-details li{width:50%}.lity-content .mec-events-meta-group-booking ul.mec-book-price-details li:nth-child(even){border:none}.lity-content .mec-events-meta-group-booking ul.mec-book-price-details li span{display:block}.lity-content .mec-events-meta-group-booking button[type=submit]:after{display:none;font-family:simple-line-icons;content:"\e098";margin-left:4px;-webkit-animation:rotating 1.2s linear infinite;-moz-animation:rotating 1.2s linear infinite;-ms-animation:rotating 1.2s linear infinite;-o-animation:rotating 1.2s linear infinite;animation:rotating 1.2s linear infinite}.lity-content .mec-events-meta-group-booking button[type=submit].loading:after{display:inline-block}@media only screen and (max-width:480px){.lity-content .mec-events-meta-group-booking{padding:20px;width:340px;margin:0 auto}}.mec-events-meta-group-booking{position:relative}.mec-cover-loader:after{content:'';position:absolute;top:0;right:0;left:0;bottom:0;background:rgba(255,255,255,.5);z-index:99999}.mec-loader{background:rgba(0,0,0,0);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:9}.mec-loader,.mec-loader:after{border-radius:50%;width:5em;height:5em;z-index:999999999999}.mec-loader{font-size:10px;text-indent:-9999em;border-top:.5em solid rgba(0,0,0,.2);border-right:.5em solid rgba(0,0,0,.2);border-bottom:.5em solid rgba(0,0,0,.2);border-left:.5em solid #fff;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:mecloader 1.1s infinite linear;animation:mecloader 1.1s infinite linear}@-webkit-keyframes mecloader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mecloader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.mec-wrap *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mec-wrap :after,.mec-wrap :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mec-wrap .clearfix:after,.mec-wrap .clearfix:before{content:'\0020';display:block;overflow:hidden;visibility:hidden;width:0;height:0}.mec-wrap .clearfix:after{clear:both}.mec-wrap .clearfix{zoom:1}.mec-wrap .clear,.mec-wrap .clr{clear:both;display:block;overflow:hidden;visibility:hidden}.mec-wrap .clr{visibility:visible;overflow:visible}.mec-container [class*=col-] img{max-width:100%}.mec-container{margin-right:auto;margin-left:auto;padding-left:10px;padding-right:10px}.mec-container:after,.mec-container:before{content:" ";display:table}.mec-container:after{clear:both}@media only screen and (max-width:479px){.mec-container{width:300px}}@media only screen and (min-width:480px) and (max-width:767px){.mec-container{width:420px}}@media only screen and (min-width:768px) and (max-width:960px){.mec-container{width:768px}}@media only screen and (min-width:961px){.mec-container{width:960px}}@media only screen and (min-width:1200px){.mec-container{width:1196px;padding-left:15px;padding-right:15px}}@media only screen and (min-width:1921px){.mec-container{max-width:1690px}}.mec-wrap .row{margin-left:-10px;margin-right:-10px}.mec-wrap .row:after,.mec-wrap .row:before{content:" ";display:table}.mec-wrap .row:after{clear:both}.mec-wrap .col-lg-1,.mec-wrap .col-lg-10,.mec-wrap .col-lg-11,.mec-wrap .col-lg-12,.mec-wrap .col-lg-2,.mec-wrap .col-lg-3,.mec-wrap .col-lg-4,.mec-wrap .col-lg-5,.mec-wrap .col-lg-6,.mec-wrap .col-lg-7,.mec-wrap .col-lg-8,.mec-wrap .col-lg-9,.mec-wrap .col-md-1,.mec-wrap .col-md-10,.mec-wrap .col-md-11,.mec-wrap .col-md-12,.mec-wrap .col-md-2,.mec-wrap .col-md-3,.mec-wrap .col-md-4,.mec-wrap .col-md-5,.mec-wrap .col-md-6,.mec-wrap .col-md-7,.mec-wrap .col-md-8,.mec-wrap .col-md-9,.mec-wrap .col-sm-1,.mec-wrap .col-sm-10,.mec-wrap .col-sm-11,.mec-wrap .col-sm-12,.mec-wrap .col-sm-2,.mec-wrap .col-sm-3,.mec-wrap .col-sm-4,.mec-wrap .col-sm-5,.mec-wrap .col-sm-6,.mec-wrap .col-sm-7,.mec-wrap .col-sm-8,.mec-wrap .col-sm-9,.mec-wrap .col-xs-1,.mec-wrap .col-xs-10,.mec-wrap .col-xs-11,.mec-wrap .col-xs-12,.mec-wrap .col-xs-2,.mec-wrap .col-xs-3,.mec-wrap .col-xs-4,.mec-wrap .col-xs-5,.mec-wrap .col-xs-6,.mec-wrap .col-xs-7,.mec-wrap .col-xs-8,.mec-wrap .col-xs-9{position:relative;min-height:1px;padding-left:10px;padding-right:10px}@media only screen and (min-width:1200px){.mec-wrap .col-lg-1,.mec-wrap .col-lg-10,.mec-wrap .col-lg-11,.mec-wrap .col-lg-12,.mec-wrap .col-lg-2,.mec-wrap .col-lg-3,.mec-wrap .col-lg-4,.mec-wrap .col-lg-5,.mec-wrap .col-lg-6,.mec-wrap .col-lg-7,.mec-wrap .col-lg-8,.mec-wrap .col-lg-9,.mec-wrap .col-md-1,.mec-wrap .col-md-10,.mec-wrap .col-md-11,.mec-wrap .col-md-12,.mec-wrap .col-md-2,.mec-wrap .col-md-3,.mec-wrap .col-md-4,.mec-wrap .col-md-5,.mec-wrap .col-md-6,.mec-wrap .col-md-7,.mec-wrap .col-md-8,.mec-wrap .col-md-9,.mec-wrap .col-sm-1,.mec-wrap .col-sm-10,.mec-wrap .col-sm-11,.mec-wrap .col-sm-12,.mec-wrap .col-sm-2,.mec-wrap .col-sm-3,.mec-wrap .col-sm-4,.mec-wrap .col-sm-5,.mec-wrap .col-sm-6,.mec-wrap .col-sm-7,.mec-wrap .col-sm-8,.mec-wrap .col-sm-9,.mec-wrap .col-xs-1,.mec-wrap .col-xs-10,.mec-wrap .col-xs-11,.mec-wrap .col-xs-12,.mec-wrap .col-xs-2,.mec-wrap .col-xs-3,.mec-wrap .col-xs-4,.mec-wrap .col-xs-5,.mec-wrap .col-xs-6,.mec-wrap .col-xs-7,.mec-wrap .col-xs-8,.mec-wrap .col-xs-9{padding-left:15px;padding-right:15px}.mec-wrap .row{margin-left:-15px;margin-right:-15px}}.mec-container [class*=col-].alpha{padding-left:0}.mec-container [class*=col-].omega{padding-right:0}.mec-wrap .col-xs-1,.mec-wrap .col-xs-10,.mec-wrap .col-xs-11,.mec-wrap .col-xs-12,.mec-wrap .col-xs-2,.mec-wrap .col-xs-3,.mec-wrap .col-xs-4,.mec-wrap .col-xs-5,.mec-wrap .col-xs-6,.mec-wrap .col-xs-7,.mec-wrap .col-xs-8,.mec-wrap .col-xs-9{float:left}.mec-wrap .col-xs-12{width:100%}.mec-wrap .col-xs-11{width:91.66666666666666%}.mec-wrap .col-xs-10{width:83.33333333333334%}.mec-wrap .col-xs-9{width:75%}.mec-wrap .col-xs-8{width:66.66666666666666%}.mec-wrap .col-xs-7{width:58.333333333333336%}.mec-wrap .col-xs-6{width:50%}.mec-wrap .col-xs-5{width:41.66666666666667%}.mec-wrap .col-xs-4{width:33.33333333333333%}.mec-wrap .col-xs-3{width:25%}.mec-wrap .col-xs-2{width:16.666666666666664%}.mec-wrap .col-xs-1{width:8.333333333333332%}@media (min-width:768px){.mec-wrap .col-sm-1,.mec-wrap .col-sm-10,.mec-wrap .col-sm-11,.mec-wrap .col-sm-12,.mec-wrap .col-sm-2,.mec-wrap .col-sm-3,.mec-wrap .col-sm-4,.mec-wrap .col-sm-5,.mec-wrap .col-sm-6,.mec-wrap .col-sm-7,.mec-wrap .col-sm-8,.mec-wrap .col-sm-9{float:left}.mec-wrap .col-sm-12{width:100%}.mec-wrap .col-sm-11{width:91.66666666666666%}.mec-wrap .col-sm-10{width:83.33333333333334%}.mec-wrap .col-sm-9{width:75%}.mec-wrap .col-sm-8{width:66.66666666666666%}.mec-wrap .col-sm-7{width:58.333333333333336%}.mec-wrap .col-sm-6{width:50%}.mec-wrap .col-sm-5{width:41.66666666666667%}.mec-wrap .col-sm-4{width:33.33333333333333%}.mec-wrap .col-sm-3{width:25%}.mec-wrap .col-sm-2{width:16.666666666666664%}.mec-wrap .col-sm-1{width:8.333333333333332%}}@media (min-width:961px){.mec-wrap .col-md-1,.mec-wrap .col-md-10,.mec-wrap .col-md-11,.mec-wrap .col-md-12,.mec-wrap .col-md-2,.mec-wrap .col-md-3,.mec-wrap .col-md-4,.mec-wrap .col-md-5,.mec-wrap .col-md-6,.mec-wrap .col-md-7,.mec-wrap .col-md-8,.mec-wrap .col-md-9{float:left}.mec-wrap .col-md-12{width:100%}.mec-wrap .col-md-11{width:91.66666666666666%}.mec-wrap .col-md-10{width:83.33333333333334%}.mec-wrap .col-md-9{width:75%}.mec-wrap .col-md-8{width:66.66666666666666%}.mec-wrap .col-md-7{width:58.333333333333336%}.mec-wrap .col-md-6{width:50%}.mec-wrap .col-md-5{width:41.66666666666667%}.mec-wrap .col-md-4{width:33.33333333333333%}.mec-wrap .col-md-3{width:25%}.mec-wrap .col-md-2{width:16.666666666666664%}.mec-wrap .col-md-1{width:8.333333333333332%}}@media (min-width:1200px){.mec-wrap .col-lg-1,.mec-wrap .col-lg-10,.mec-wrap .col-lg-11,.mec-wrap .col-lg-12,.mec-wrap .col-lg-2,.mec-wrap .col-lg-3,.mec-wrap .col-lg-4,.mec-wrap .col-lg-5,.mec-wrap .col-lg-6,.mec-wrap .col-lg-7,.mec-wrap .col-lg-8,.mec-wrap .col-lg-9{float:left}.mec-wrap .col-lg-12{width:100%}.mec-wrap .col-lg-11{width:91.66666666666666%}.mec-wrap .col-lg-10{width:83.33333333333334%}.mec-wrap .col-lg-9{width:75%}.mec-wrap .col-lg-8{width:66.66666666666666%}.mec-wrap .col-lg-7{width:58.333333333333336%}.mec-wrap .col-lg-6{width:50%}.mec-wrap .col-lg-5{width:41.66666666666667%}.mec-wrap .col-lg-4{width:33.33333333333333%}.mec-wrap .col-lg-3{width:25%}.mec-wrap .col-lg-2{width:16.666666666666664%}.mec-wrap .col-lg-1{width:8.333333333333332%}}#mec_woo_add_to_cart_btn{min-width:170px;margin-top:5px;text-align:center}.mec-breadcrumbs{border-radius:2px;padding:9px 15px 6px;font-size:11px;color:#8d8d8d;letter-spacing:0;text-transform:none;font-weight:500;margin:auto 15px 33px 15px;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.025)}.mec-breadcrumbs-modern{margin:auto 0 33px 0}.mec-breadcrumbs a{color:#000;padding-left:4px}.mec-breadcrumbs a:hover{text-decoration:underline}.mec-breadcrumbs i{font-size:8px;margin:0 0 0 4px}.mec-breadcrumbs .container{padding-left:20px}.mec-content-notification a{margin-left:5px}.mec-content-notification{background:#f7f7f7;padding:10px 10px 10px;border:1px solid #e8e8e8}.mec-content-notification p{margin-bottom:0}#mec-advanced-wraper div:first-child>ul{display:block;margin:5px 0;padding:5px 0;width:430px;border:1px solid #e1e2e3;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.05)}#mec-advanced-wraper div:first-child>ul span{display:none}#mec-advanced-wraper div:first-child>ul *{display:inline-block;background:#fff;font-size:12px;color:#717273;text-align:center}#mec-advanced-wraper div:first-child>ul>li{width:60px;font-weight:700;margin:0 10px 0 0;padding:4px 0;border-right:1px solid #e1e2e3}#mec-advanced-wraper div:first-child>ul>ul>li{margin:0;padding:2px 10px;cursor:pointer;border-radius:2px;transition:all .18s ease}#mec-advanced-wraper div:first-child>ul>ul>li:hover,.mec-active{background:#008aff!important;color:#fff!important}.mec-search-bar-wrap .mec-search-form .mec-text-input-search{width:83%}.mec-search-bar-wrap .mec-search-form .mec-ajax-search-result .mec-text-input-search{width:100%;float:none}.mec-search-bar-wrap input#mec-search-bar-input{width:calc(100% - 84%);margin-left:11px;background:#40d9f1;Color:#fff;font-weight:400}.mec-text-input-search+input#mec-search-bar-input{margin-left:-3px}.mec-search-bar-wrap input#mec-search-bar-input:hover{background:#000}.mec-wrap.mec-search-bar-wrap .mec-totalcal-box input{float:none}@media(max-width:768px){.mec-search-bar-wrap .mec-search-form .mec-text-input-search{display:inline-block}}@media(max-width:480px){.mec-search-bar-wrap .mec-search-form .mec-text-input-search{width:64%}.mec-search-bar-wrap input#mec-search-bar-input{width:calc(100% - 67%)}}.mec-wrap.mec-search-bar-wrap .mec-totalcal-box{overflow:visible}.mec-ajax-search-result{position:relative}.mec-search-bar-wrap.mec-wrap .mec-totalcal-box input[type=text]{width:calc(100% - 36px)}.mec-search-bar-wrap.mec-wrap .mec-totalcal-box input[type=text]:focus{border-color:#efefef}div#mec-ajax-search-result-wrap{position:absolute;top:100%;opacity:0;visibility:hidden;width:calc(100% - 2px);min-height:50px;left:0;right:0;padding:0 10px;z-index:9999;transition:all .3s ease}.mec-ajax-search-result-events{background:#fff;padding:10px 20px;border:1px solid #efefef;border-top:none}.mec-ajax-search-result-events article:first-of-type{border:none}article.mec-search-bar-result{text-align:left;margin-bottom:0;padding-bottom:25px;padding-top:26px;border-top:1px solid #efefef;transition:all .33s ease;clear:both}.mec-search-bar-result .mec-event-list-search-bar-date{width:64px;height:64px;margin-right:10px;font-size:11px;text-transform:uppercase;float:left;text-align:center;padding-top:2px}.mec-search-bar-result .mec-event-list-search-bar-date span{font-size:40px;line-height:30px;font-weight:700;display:block;margin-bottom:6px;letter-spacing:1px}.mec-search-bar-result .mec-event-image{float:left;margin-right:20px;width:65px;height:auto}.mec-search-bar-result .mec-event-time{font-size:11px;line-height:1.1;margin:0}.mec-search-bar-result .mec-event-time i{color:#40d9f1;float:none;width:unset;height:unset;font-size:inherit;margin-right:3px;border:none;padding:0}.mec-search-bar-result .mec-event-title{font-size:13px;padding:0;margin:10px 0 8px;font-weight:700;text-transform:uppercase}.mec-search-bar-result .mec-event-title a{text-decoration:none;color:#494949;transition:color .3s ease}.mec-search-bar-result .mec-event-detail{font-size:13px;line-height:1.3;font-family:Roboto,sans-serif;color:#9a9a9a;margin-bottom:0}.mec-wrap.mec-modern-search-bar .mec-totalcal-box{background:rgba(255,255,255,.87);border:none;padding:35px;border-radius:3px;box-shadow:0 3px 13px rgba(0,0,0,.4);position:relative}.mec-wrap.mec-modern-search-bar .mec-totalcal-box input[type=search],.mec-wrap.mec-modern-search-bar .mec-totalcal-box input[type=text]{height:58px;background:rgba(255,255,255,.99);border-radius:2px;box-shadow:0 4px 8px rgba(0,0,0,.1) inset;border:1px solid #ccc;width:100%;padding-left:45px;padding-right:13px;font-size:16px}.mec-wrap.mec-modern-search-bar .mec-totalcal-box .mec-text-input-search i{position:absolute;background:0 0;border:none;font-size:21px;left:15px;top:calc(50% - 19px);color:#40d9f1}.mec-wrap.mec-modern-search-bar .mec-text-input-search{position:relative;height:58px}.mec-wrap.mec-modern-search-bar .mec-totalcal-box input[type=submit]{height:58px;border:none;border-radius:2px;background:#fc4a1a;font-size:17px;font-weight:700!important}.mec-wrap.mec-modern-search-bar .mec-text-input-search+input#mec-search-bar-input{margin-left:0}.mec-wrap.mec-modern-search-bar .mec-search-form .mec-dropdown-wrap .mec-dropdown-search select{height:45px;background:rgba(255,255,255,.99);border-radius:2px;box-shadow:0 4px 8px rgba(0,0,0,.1) inset;border:1px solid #ccc;padding-right:13px;font-size:16px;border-left:0}.mec-wrap.mec-modern-search-bar .mec-search-form .mec-dropdown-wrap i{height:45px;background:rgba(255,255,255,.99);border-radius:2px;box-shadow:0 4px 8px rgba(0,0,0,.1) inset;border:1px solid #ccc;font-size:15px;padding-top:14px;border-right:0;color:#40d9f1}.mec-wrap.mec-modern-search-bar .mec-search-form .mec-dropdown-wrap{min-height:64px}@media(max-width:768px){.mec-wrap.mec-modern-search-bar .mec-search-form .mec-text-input-search{width:70%}.mec-wrap.mec-modern-search-bar input#mec-search-bar-input{width:calc(100% - 72%)}}@media(max-width:480px){.mec-wrap.mec-modern-search-bar input#mec-search-bar-input{width:92%;padding:0 10px;position:relative;display:block;margin-left:11px}.mec-wrap.mec-modern-search-bar .mec-search-form .mec-text-input-search{width:100%;margin-bottom:20px}.mec-wrap.mec-modern-search-bar .mec-text-input-search+input#mec-search-bar-input{margin-left:10px}}.mec-related-events-wrap{margin-top:50px}.mec-related-events-wrap h3.mec-rec-events-title:before{content:"";background:#2c2f34;width:46px;height:4px;position:absolute;top:59px;left:0}.mec-related-events-wrap h3.mec-rec-events-title{font-size:21px;font-weight:600;padding:17px 0;margin-bottom:28px;text-transform:uppercase;border-bottom:1px solid #e8e8e8;position:relative}.mec-related-event-post figure{margin:0}.mec-related-event-post figure img{width:100%}.mec-related-event-content{background-color:#fff;margin:-27px 30px 15px;position:relative;max-width:90%;padding:13px 21px 16px 19px}.mec-related-event-content h5 a{font-size:16px;color:#121212;font-weight:600;transition:all .3s ease}.mec-fes-form-cntt #mec-organizer-payments ul{list-style:none;background:0 0}.mec-fes-form-cntt #mec-organizer-payments ul li h4{background:0 0;letter-spacing:0;border-bottom:1px solid #e8e8e8;display:inline-block;padding-left:0!important;padding-bottom:10px!important;margin:0;margin-bottom:20px;letter-spacing:1px;text-transform:capitalize}.mec-fes-form-cntt #mec-organizer-payments ul>li{width:33%;display:inline-block;vertical-align:top;padding:0 30px}
1
+ .lity-container,.mec-wrap,.mec-wrap div:not([class^=elementor-]){font-family:Montserrat,Helvetica,Arial,sans-serif}.entry-content .mec-wrap h1,.entry-content .mec-wrap h2,.entry-content .mec-wrap h3,.entry-content .mec-wrap h4,.entry-content .mec-wrap h5,.entry-content .mec-wrap h6,.mec-wrap h1,.mec-wrap h2,.mec-wrap h3,.mec-wrap h4,.mec-wrap h5,.mec-wrap h6{font-family:Montserrat,Helvetica,Arial,sans-serif;color:#171c24;font-weight:300;font-style:inherit;letter-spacing:normal;clear:none}.mec-wrap h1{font-size:50px;line-height:1.16;margin-bottom:12px;letter-spacing:-1px}.mec-wrap h2{font-size:36px;line-height:1.14;margin-bottom:10px}.mec-wrap h3{font-size:28px;line-height:1.2;margin-bottom:8px}.mec-wrap h4{font-size:24px;line-height:1.2;margin-bottom:10px}.mec-wrap h5{font-size:18px;line-height:1.3;margin-bottom:7px}.mec-wrap h6{font-size:16px;line-height:1.3;margin-bottom:4px}.mec-wrap .subheader{color:#849098}.mec-wrap h1 strong{font-weight:700}.mec-wrap p{margin:0 0 20px 0;color:#616161;font-size:14px;line-height:1.8}.mec-wrap .mec-event-article .mec-color-hover{box-shadow:none;border:none}.mec-wrap abbr,.mec-wrap acronym{cursor:auto;border:none}.entry-content .mec-wrap a{box-shadow:none}.mec-wrap .button,.mec-wrap a.button:not(.owl-dot),.mec-wrap button:not(.owl-dot),.mec-wrap input[type=button],.mec-wrap input[type=reset],.mec-wrap input[type=submit]{position:relative;border:none;border-radius:0;color:#fff;display:inline-block;font-size:12px;letter-spacing:1px;line-height:1.5;text-transform:uppercase;font-weight:600;text-decoration:none;cursor:pointer;margin-bottom:21px;margin-right:10px;line-height:1;padding:18px 20px 16px;background:#39c36e;-webkit-transition:all .21s ease;-moz-transition:all .21s ease;transition:all .21s ease}.mec-wrap .button:hover,.mec-wrap a.button:hover,.mec-wrap button:hover,.mec-wrap input[type=button]:hover,.mec-wrap input[type=reset]:hover,.mec-wrap input[type=submit]:hover{background:#222;color:#fff}.mec-booking-form-container button{display:block!important}.vertical-space,.vertical-space1,.vertical-space2,.vertical-space3,.vertical-space4,.vertical-space5{display:block;width:100%;margin:0;clear:both;border:0 none;height:20px}.vertical-space2{height:40px}.vertical-space3{height:60px}.vertical-space4{height:80px}.vertical-space5{height:100px}@media only screen and (max-width:479px){.vertical-space,.vertical-space1{height:8px}.vertical-space2{height:14px}.vertical-space3{height:28px}.vertical-space4{height:40px}.vertical-space5{height:60px}}@media only screen and (max-width:960px){.vertical-space,.vertical-space1{height:12px}.vertical-space2{height:18px}.vertical-space3{height:36px}.vertical-space4{height:50px}.vertical-space5{height:80px}}.mec-wrap abbr{cursor:auto;border-bottom:0}@-webkit-keyframes rotating{from{-ms-transform:rotate(0);-moz-transform:rotate(0);-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}to{-ms-transform:rotate(360deg);-moz-transform:rotate(360deg);-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotating{from{-ms-transform:rotate(0);-moz-transform:rotate(0);-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}to{-ms-transform:rotate(360deg);-moz-transform:rotate(360deg);-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.mec-wrap{font:14px/25px sans-serif;font-family:Montserrat,Helvetica,Arial,sans-serif;font-weight:400;color:#626262}.mec-wrap .mec-events a{border-bottom:none}.mec-wrap .mec-container a{box-shadow:none}.mec-event-content p{font-family:Roboto,sans-serif;font-weight:300}.mec-wrap .mec-clear:after,.mec-wrap .mec-clear:before{content:" ";display:table}.mec-wrap .mec-clear:after{clear:both}.mec-events-button{background:#fff;padding:12px 34px;font-size:13px;font-weight:400;letter-spacing:0;border:1px solid #e3e3e3;margin-right:10px;transition:.3s}.mec-wrap .mec-events-button:hover{color:#fff}.mec-no-event{display:none}#mec-active-current{display:block!important}.current-hide #mec-active-current{display:none!important}.mec-event-grid-classic .mec-event-article{position:relative;border:2px solid #e3e3e3;box-shadow:0 2px 0 0 rgba(0,0,0,.016);margin-bottom:30px;max-width:none}.mec-event-grid-classic .mec-event-content{background:#fff;color:#767676;padding:0 20px 5px;text-align:center;min-height:125px}.mec-event-grid-classic .mec-event-title{color:#202020;margin:10px 0;font-weight:700;font-size:20px;letter-spacing:1px;text-transform:uppercase}.mec-event-grid-classic .mec-event-title a{color:#202020;transition:all .24s ease}.mec-event-grid-classic .mec-event-date{font-weight:400;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#fff;padding:3px 20px;margin:0 -20px 20px -20px;text-align:center}.mec-event-grid-classic .mec-event-content p{font-size:15px;color:#8a8a8a}.mec-event-grid-classic .mec-event-detail{display:none}.mec-event-grid-classic img{margin-bottom:0;width:100%}.mec-event-footer{position:relative;border-top:1px solid #efefef;padding:20px;min-height:80px;margin:0;background:#fafafa}.mec-event-sharing-wrap{left:15px;position:absolute;list-style:none;margin:0}.mec-event-sharing-wrap .mec-event-sharing{position:absolute;padding:8px 0 2px;left:-6px;bottom:54px;margin:0;margin-top:6px;border-radius:5px;width:50px;visibility:hidden;opacity:0;border:1px solid #e2e2e2;background:#fff;box-shadow:0 0 9px 0 rgba(0,0,0,.06);z-index:99;-webkit-transition:all .18s ease;transition:all .18s ease}.mec-event-sharing-wrap .mec-event-sharing:after,.mec-event-sharing-wrap .mec-event-sharing:before{content:'';display:block;position:absolute;bottom:-10px;left:50%;margin-left:-10px;width:0;height:0;border-style:solid;border-width:10px}.mec-event-sharing-wrap .mec-event-sharing:before{bottom:-21px;border-color:#e2e2e2 transparent transparent transparent}.mec-event-sharing-wrap .mec-event-sharing:after{bottom:-19px;border-color:#fff transparent transparent transparent}.mec-event-sharing-wrap:hover .mec-event-sharing{opacity:1;visibility:visible}.mec-event-sharing-wrap li{text-align:center;border:0;display:block;margin-right:2px;overflow:hidden;margin:0 auto 6px;width:38px}.mec-event-sharing-wrap:hover>li{cursor:pointer;background-color:#40d9f1}.mec-event-sharing-wrap:hover li a{color:#fff}.mec-event-sharing-wrap>li:first-of-type{border:1px solid #d9d9d9}.mec-event-sharing-wrap li a,.mec-event-sharing-wrap:hover li ul li a{border:none;color:#767676}.mec-event-sharing-wrap li i{width:36px;height:36px;display:table-cell;vertical-align:middle}.mec-event-sharing-wrap .mec-event-sharing li a{display:block}.mec-event-sharing-wrap .mec-event-sharing li:hover a{color:#40d9f1}.mec-event-sharing .mec-event-share:hover .event-sharing-icon{background:#40d9f1;border-width:0 1px 0;cursor:pointer}.mec-event-sharing .mec-event-map{border-width:1px 0 1px}.mec-event-footer .mec-booking-button{box-shadow:none;transition:all .21s ease;font-size:11px;font-weight:500;letter-spacing:1px;text-transform:uppercase;background:#fff;color:#767676;border:1px solid #e8e8e8;position:absolute;top:20px;right:15px;padding:0 16px;line-height:37px;height:38px}.mec-event-footer .mec-booking-button:hover{background:#191919;color:#fff;border-color:#191919}@media only screen and (max-width:960px){.mec-event-grid-classic{margin-bottom:30px}}.mec-widget .mec-event-grid-classic.mec-owl-carousel{padding:36px 0 16px}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav{margin:5px 0;width:100%;position:absolute;top:15px;padding:0}.mec-skin-grid-container.mec-widget{padding-top:18px}.mec-widget .mec-event-grid-classic.mec-owl-carousel{padding:20px 0 16px}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav{margin:0;width:100%;position:absolute;top:0;padding:0}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav div{position:absolute;background:#fff;line-height:0;width:34px;height:26px;padding:6px;text-align:center;margin-top:-17px;border-radius:3px;border:1px solid #e2e2e2;text-align:center;box-shadow:0 2px 0 0 rgba(0,0,0,.028);transition:all .33s ease}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav i{font-size:12px;color:#40d9f1;cursor:pointer}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav .owl-next{right:0}.mec-widget .mec-event-grid-classic.mec-owl-carousel .owl-nav .owl-prev{left:0}.mec-widget .mec-event-grid-classic.mec-owl-carousel .mec-event-sharing{display:none}.mec-widget .mec-event-grid-classic.mec-owl-carousel .mec-event-footer{text-align:center}.mec-widget .mec-event-grid-classic.mec-owl-carousel .mec-event-footer .mec-booking-button{position:static;padding:11px 16px}.widget .mec-event-footer ul.mec-event-sharing-wrap li a.mec-event-share-icon{padding:0}@media screen and (min-width:56.875em){.mec-widget .mec-month-container dl{margin-bottom:0}}.mec-widget .mec-event-grid-classic.owl-carousel .mec-event-footer{text-align:right}.mec-widget .mec-event-grid-classic.owl-carousel .mec-event-sharing-wrap{left:5px;padding-left:5px}.mec-widget .mec-event-grid-classic.owl-carousel .mec-event-sharing-wrap .mec-event-sharing{left:0}.mec-widget .mec-event-sharing-wrap .mec-event-sharing{position:absolute;top:auto;bottom:52px;margin:0;margin-top:0;border-radius:5px}.mec-widget .mec-event-sharing-wrap .mec-event-sharing:after{top:auto;bottom:-17px;border-color:#fff transparent transparent transparent}.mec-widget .mec-event-sharing-wrap .mec-event-sharing:before{top:auto;bottom:-18px;border-color:#e2e2e2 transparent transparent transparent}.mec-event-grid-clean{margin-bottom:10px;max-width:none}.mec-event-grid-clean .mec-event-article{margin-bottom:30px;position:relative;border:1px solid #e2e2e2;text-align:center;padding:15px 15px 0;background:#fff;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-grid-clean .mec-event-content{background:#fff;color:#767676;padding:25px 16px 0;text-align:left}.mec-event-grid-clean .mec-event-title{color:#202020;margin:0 0 10px 0;font-weight:700;font-size:21px;text-transform:capitalize}.mec-event-grid-clean .mec-event-title a{color:#202020;transition:all .24s ease}.mec-event-grid-clean .mec-event-date{font-weight:400;font-size:11px;text-transform:uppercase;letter-spacing:1px;background-color:#40d9f1;color:#fff;padding:3px 0;margin:0;text-align:center}.mec-event-grid-clean .mec-event-content p{font-size:15px;color:#9a9a9a;line-height:1.54}.mec-event-grid-clean img{margin-bottom:0;width:100%}.mec-event-grid-clean .event-grid-t2-head{margin-bottom:10px;color:#fff;padding:9px 14px 6px;text-align:left}.mec-event-grid-clean .event-grid-t2-head .mec-event-date{font-size:50px;line-height:50px;float:left;margin-right:11px}.mec-event-grid-clean .event-grid-t2-head .mec-event-month{text-transform:uppercase;font-size:17px;line-height:20px;padding-top:4px}.mec-event-grid-clean .event-grid-t2-head .mec-event-detail{font-size:12px}.mec-event-grid-clean .mec-event-sharing-wrap{left:0}.mec-event-grid-clean .mec-event-footer{position:relative;border-top:2px solid;padding:20px 0;margin:0 14px;text-align:left;background:0 0}.mec-event-grid-clean .mec-event-footer .mec-booking-button{right:0}.mec-event-grid-clean .row{margin-bottom:30px}.mec-event-grid-modern{margin-bottom:10px;max-width:none}.mec-event-grid-modern .mec-event-article{position:relative;border:1px solid #e2e2e2;text-align:center;margin-bottom:30px;padding:45px 15px 10px;background:#fff;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-grid-modern .mec-event-content{background:#fff;color:#767676;padding:35px 15px 10px;text-align:left}.mec-event-grid-modern .mec-event-title{color:#202020;margin:0 0 10px 0;font-weight:700;font-size:24px;text-transform:none;letter-spacing:-1px}.mec-event-grid-modern .mec-event-title a{color:#202020;transition:all .24s ease}.mec-event-grid-modern .mec-event-content p{font-size:15px;color:#9a9a9a;line-height:1.54}.mec-event-grid-modern img{margin-bottom:0;width:100%}.mec-event-grid-modern .event-grid-modern-head{margin-bottom:10px;padding:9px 14px 6px;text-align:left}.mec-event-grid-modern .event-grid-modern-head .mec-event-date{font-size:50px;line-height:50px;float:left;margin-right:11px}.mec-event-grid-modern .event-grid-modern-head .mec-event-month{text-transform:uppercase;font-size:17px;line-height:20px;padding-top:4px}.mec-event-grid-modern .event-grid-modern-head .mec-event-detail{font-size:12px}.mec-event-grid-modern .event-grid-modern-head .mec-event-day{margin-top:9px;color:silver;font-family:Roboto,sans-serif;font-size:35px;font-weight:100;text-transform:uppercase;letter-spacing:-1px}.mec-event-grid-modern .mec-event-footer{position:relative;height:90px;padding:20px 0;border:none;margin:0 14px;text-align:left;background:0 0}.mec-event-grid-modern .mec-event-footer .mec-booking-button{right:auto;left:0}.mec-event-grid-modern .mec-event-sharing-wrap{left:auto;right:0}.mec-event-grid-modern .mec-event-sharing{left:auto;right:-6px}.mec-event-grid-modern .mec-event-sharing-wrap li{border-radius:55px}.mec-event-grid-modern .row{margin-bottom:0}@media only screen and (max-width:479px){.mec-event-grid-modern .mec-event-article{padding-bottom:30px}.mec-event-grid-modern .mec-event-sharing{top:60px;left:0;right:auto}.mec-event-grid-modern .mec-event-footer .mec-booking-button{top:0}}.mec-event-title-soldout .soldout{background:#de3120;padding:4px 5px;color:#fff}.mec-event-title-soldout .soldout{background:#de3120;position:relative;top:-2px;border-radius:10px 0 0 20px;padding:2px 4px 2px 10px;color:#fff}.mec-event-title-soldout .soldout:before{content:' ';position:absolute;width:0;height:0;border-top:10px solid #de3120;border-bottom:10px solid #de3120;right:-10px;border-right:10px solid transparent;border-left:10px solid transparent;top:0}.mec-event-title-soldout .soldout:after{content:' ';position:absolute;width:6px;height:6px;background:#de3120;border-radius:50%;left:3px;top:4px;border:2px dashed #fff}.mec-event-grid-colorful .mec-event-article{min-height:400px;border:none;box-shadow:none;background:#40d9f1;padding-top:25px;margin:0;color:#fff}.mec-event-grid-colorful .mec-event-content{background:0 0}.mec-event-grid-colorful .event-grid-modern-head,.mec-event-grid-colorful .event-grid-modern-head .mec-event-date,.mec-event-grid-colorful .event-grid-modern-head .mec-event-day,.mec-event-grid-colorful .mec-event-content p,.mec-event-grid-colorful .mec-event-sharing-wrap>li>a,.mec-event-grid-colorful .mec-event-title a{color:#fff}.mec-event-grid-colorful .mec-event-footer .mec-booking-button{border:none}.mec-event-grid-colorful .mec-event-sharing-wrap>li{border-color:#fff}.mec-event-grid-colorful .mec-event-sharing-wrap:hover>li{background:#333;border-color:#333}.mec-event-grid-colorful .mec-event-title a.mec-color-hover:hover{color:#fff;text-decoration:underline}.mec-event-grid-colorful .mec-event-title .event-color{display:none}.mec-event-grid-colorful div[class^=col-md-]{padding:0 1px 1px 0;margin:0}@media only screen and (min-width:768px){.mec-wrap.mec-sm959.mec-event-grid-colorful .event-grid-modern-head .mec-event-day{font-size:26px}.mec-wrap.mec-sm959.mec-event-grid-colorful .event-grid-modern-head .mec-event-month{font-size:15px}.mec-wrap.mec-sm959.mec-event-grid-colorful .event-grid-modern-head .mec-event-date{font-size:50px}.mec-wrap.mec-sm959.mec-event-grid-colorful .mec-event-title{font-size:21px}.mec-wrap.mec-sm959.mec-event-grid-colorful .mec-event-content p{font-size:13px}}@media only screen and (min-width:768px) and (max-width:1200px){.mec-wrap.mec-sm959.mec-event-grid-colorful div[class^=col-md-]{width:50%}}.mec-event-list-minimal .mec-event-article{border-bottom:1px solid #efefef;padding:24px 0 16px}.mec-event-list-minimal .mec-wrap .col-md-9{padding:0}.mec-event-list-minimal .mec-event-date{position:relative;float:left;margin-right:30px;color:#fff;width:52px;padding:6px 4px 3px;text-align:center;text-transform:uppercase;border-radius:3px}.mec-event-list-minimal .mec-event-date span{display:block;font-size:24px;font-weight:700;text-align:center;margin-bottom:4px}.mec-event-list-minimal .mec-event-date:after{display:block;content:"";position:absolute;width:50px;left:1px;top:1px;height:30px;background:rgba(255,255,255,.1);box-shadow:0 4px 4px rgba(0,0,0,.02)}.mec-event-list-minimal .mec-event-title{margin-top:0;margin-bottom:10px;font-weight:700;font-size:18px;text-transform:uppercase;letter-spacing:0;padding-top:5px}.mec-event-list-minimal .mec-event-detail{font-size:15px;font-weight:300;line-height:1;letter-spacing:0;color:#9a9a9a;font-family:Roboto,sans-serif}.mec-event-list-minimal .btn-wrapper{text-align:right;padding-right:0;padding-top:6px}.mec-event-list-minimal .btn-wrapper .mec-detail-button{border-bottom:0;margin-bottom:14px;margin-right:0;box-shadow:none}.mec-event-list-minimal a.mec-detail-button{text-align:center;display:inline-block;background:#ededed;color:#191919;padding:12px;border-radius:2px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:2px;transition:all .24s ease}.mec-event-list-minimal a.mec-detail-button:hover{background:#292929;color:#fff}.vc_col-sm-4 .mec-event-list-minimal .mec-event-date,.vc_col-sm-6 .mec-event-list-minimal .mec-event-date{margin-right:12px}.vc_col-sm-4 .mec-event-list-minimal .mec-event-title,.vc_col-sm-6 .mec-event-list-minimal .mec-event-title{font-size:15px;letter-spacing:2px}@media only screen and (min-width:480px) and (max-width:767px){.mec-event-list-minimal .btn-wrapper{padding-left:0}.mec-event-list-minimal .mec-event-date{margin-right:10px}}@media only screen and (max-width:767px){.mec-event-list-minimal .btn-wrapper .mec-detail-button{display:block;text-align:center;margin:0;margin-top:16px;padding:8px}.mec-event-list-minimal .btn-wrapper{margin:12px 0}}@media only screen and (max-width:479px){.mec-event-list-minimal .mec-event-date{float:none;width:100%;margin-bottom:8px}.mec-event-list-minimal .mec-event-date span{display:inline;padding-right:25px;margin-right:7px;font-size:inherit}.mec-event-list-minimal .mec-event-date:after{width:45%;box-shadow:4px 0 4px rgba(0,0,0,.02)}.mec-event-list-minimal .btn-wrapper{text-align:center;padding-left:0}.mec-event-list-minimal{text-align:center}.mec-event-list-minimal .mec-event-detail{margin-bottom:10px}}.mec-wrap .mec-event-list-modern .mec-event-title{margin-top:0;margin-bottom:10px}.mec-event-list-modern .mec-event-article{border-bottom:1px solid #efefef;padding:30px 0 10px}.mec-event-list-modern .mec-event-article:last-child{border-bottom:none}.mec-event-list-modern .mec-event-title a{color:#191919;transition:all .24s ease;box-shadow:none}.mec-event-list-modern .mec-event-date{text-transform:uppercase;padding:10px 0}.mec-event-list-modern .mec-event-date .event-d{font-size:48px;display:table-cell;padding:10px 0 0}.mec-event-list-modern .mec-event-date .event-f{font-size:13px;display:table-cell;vertical-align:middle;padding-left:7px;font-weight:500;letter-spacing:3px;color:#777}.mec-event-list-modern .mec-event-detail{font-weight:300;color:#8a8a8a}.mec-event-list-modern .mec-event-date .event-da{margin-top:9px;color:silver;font-family:Roboto,sans-serif;font-size:28px;font-weight:100;text-transform:uppercase;letter-spacing:-1px}.mec-event-list-modern .mec-btn-wrapper .mec-booking-button{border-radius:1px;letter-spacing:2px;border:1px solid #e6e6e6;color:#333;background-color:#fff;padding:13px 20px;font-weight:700;font-size:11px;box-shadow:0 2px 0 0 rgba(0,0,0,.016);transition:all .28s ease}.mec-event-list-modern .mec-btn-wrapper .mec-booking-button:hover{border-color:#222;background:#222;color:#fff}.mec-event-list-modern .mec-event-title{font-weight:700;font-size:20px;text-transform:uppercase;letter-spacing:1px}.mec-event-list-modern .mec-event-detail{color:#9a9a9a;font-size:15px;font-weight:300;line-height:25px;font-family:Roboto,sans-serif}.mec-event-list-modern .mec-btn-wrapper{text-align:right;padding:10px 0;text-transform:uppercase}.mec-event-list-modern .mec-event-sharing{position:relative;margin:10px 0}.mec-event-list-modern .mec-event-sharing>li{display:inline-block;border:none;border-radius:50%;margin-right:3px}.mec-event-list-modern .mec-event-sharing>li:hover{display:inline-block}.mec-event-list-modern .mec-event-sharing>li:hover a i{color:#fff;background:#40d9f1;border-color:#40d9f1}.mec-event-list-modern .mec-event-sharing>li i{width:36px;display:inline-block;line-height:35px;color:#767676;text-align:center;border-radius:50%;border:1px solid #ddd;font-size:14px}.mec-event-list-modern .mec-event-sharing .mec-event-share:hover .mec-event-sharing-icon{background:#40d9f1;border-color:#40d9f1;cursor:pointer;border-radius:50%}.mec-event-list-modern .mec-event-sharing li:hover a i{background:#40d9f1}@media only screen and (min-width:768px){.mec-event-list-modern .mec-event-article{position:relative;min-height:160px;overflow:hidden}.mec-event-list-modern .col-md-2.col-sm-2{width:210px;position:absolute;left:0;top:20px}.mec-event-list-modern .col-md-4.col-sm-4.mec-btn-wrapper{width:180px;padding:0;position:absolute;right:0;top:30%}.mec-event-list-modern .col-md-6.col-sm-6{width:100%;padding-left:225px;padding-right:195px}}@media only screen and (max-width:767px){.mec-event-list-modern .mec-btn-wrapper .mec-booking-button{letter-spacing:1px;border:1px solid #e1e1e1;padding:8px 16px}.mec-event-list-modern .mec-btn-wrapper{padding:0 0 12px}.mec-event-list-modern .mec-event-sharing{margin-bottom:0}}.mec-event-grid-minimal .mec-event-article{margin:15px 0;min-height:80px;display:table}.mec-event-grid-minimal .event-detail-wrap{display:table-cell;vertical-align:middle}.mec-event-grid-minimal .mec-event-date{width:70px;float:left;margin-right:20px;padding:12px 16px 10px;text-align:center;text-transform:uppercase;border-radius:4px;border:1px solid #e6e6e6;transition:all .37s ease-in-out;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-grid-minimal .mec-event-date span{display:block;font-size:24px;font-weight:700;text-align:center;margin-bottom:4px;color:#2a2a2a;transition:color .3s ease}.mec-event-grid-minimal .mec-event-title{margin-top:0;margin-bottom:10px;font-weight:700;line-height:21px;font-size:16px;text-transform:uppercase;transition:color .3s ease}.mec-event-grid-minimal .mec-event-title a{color:#191919;transition:color .3s ease}.mec-event-grid-minimal .mec-event-detail{font-size:15px;font-weight:300;line-height:1;letter-spacing:0;color:#9a9a9a;font-family:Roboto,sans-serif}.mec-event-grid-minimal .mec-event-date:hover{color:#fff}.mec-event-grid-minimal .mec-event-date:hover span{color:#fff}.mec-event-list-classic .mec-event-article{padding:12px 0;margin-bottom:20px}.mec-event-list-classic .mec-event-image{float:left;width:86px;margin-right:20px}.mec-event-list-classic .mec-event-date{font-weight:400;font-size:13px;letter-spacing:0;line-height:18px}.mec-event-list-classic .mec-event-date span{font-weight:500;margin-bottom:6px}.mec-event-list-classic .mec-event-title{font-size:15px;margin:10px 0 12px;font-weight:700;text-transform:uppercase}.mec-event-list-classic .mec-event-title a{color:#494949;transition:color .3s ease}.mec-event-list-classic .mec-event-detail{color:#777;font-weight:400;line-height:12px;font-size:12px;overflow:hidden}.mec-event-list-classic a.magicmore{padding:10px 16px;color:#fff;background:#222;letter-spacing:2px;font-size:11px}.mec-event-list-classic a.magicmore:after{content:"";display:none}.mec-event-list-classic a.magicmore:hover{color:#40d9f1}.mec-event-grid-simple .mec-event-article{position:relative;margin-bottom:30px}.mec-event-grid-simple .mec-event-article:after{border-right:1px solid #e6e6e6;height:60px;position:absolute;top:50%;margin-top:-30px;right:-1px}.mec-event-grid-simple .row div:last-child .mec-event-article:after{border:none}.mec-event-grid-simple .row{margin:15px 0 30px;text-align:center}.mec-event-grid-simple .mec-event-date{padding:0;margin:0;text-transform:capitalize;font-size:12px;font-weight:700}.mec-event-grid-simple .mec-event-title{margin-top:0;margin-bottom:10px;font-weight:700;line-height:21px;font-size:15px;padding-top:5px;text-transform:uppercase;transition:color .37s ease}.mec-event-grid-simple .mec-event-title a{color:#494949;transition:color .3s ease}.mec-event-grid-simple .mec-event-detail{font-family:Roboto,sans-serif;font-weight:400;line-height:1;letter-spacing:0;font-size:13px;color:#777}.mec-event-grid-simple:hover .mec-event-title{color:#40d9f1}.mec-event-grid-simple:hover .mec-event-date{background:0 0}.event-last:after{display:none}@media only screen and (max-width:767px){.mec-event-grid-simple .mec-event-article{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #eee}.mec-event-grid-simple .mec-event-article:after{border:none}}.mec-event-grid-novel .mec-event-article{position:relative;margin-bottom:30px;padding:60px 5% 60px 7%;border:1px solid rgba(255,255,255,.12);border-radius:10px;background-color:#0050fd;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;z-index:1}.mec-event-grid-novel .mec-event-article .novel-grad-bg{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:10px;opacity:0;z-index:-1;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}.mec-event-grid-novel .mec-event-article:hover{-webkit-box-shadow:0 13px 36px 0 rgba(0,0,0,.23);box-shadow:0 13px 36px 0 rgba(0,0,0,.23);border-color:transparent}.mec-event-grid-novel .mec-event-article:hover .novel-grad-bg{background-image:-webkit-gradient(linear,left top,right top,from(#262e32),to(#0e1015));background-image:-webkit-linear-gradient(left,#262e32 0,#0e1015 100%);background-image:-o-linear-gradient(left,#262e32 0,#0e1015 100%);background-image:linear-gradient(90deg,#262e32 0,#0e1015 100%);opacity:1}.mec-event-grid-novel .mec-event-image{float:left;width:150px;height:150px}.mec-event-grid-novel .mec-event-image img{width:150px;height:150px;border-radius:50%}.mec-event-grid-novel .mec-event-detail-wrap{margin-left:200px}.mec-event-grid-novel .mec-event-content h4{position:relative;margin-bottom:10px;display:inline-block}.mec-event-grid-novel .mec-event-content h4 a{font-size:24px;line-height:35px;color:#fafcff}.mec-event-grid-novel .mec-event-content h4::before{content:'';position:absolute;top:8px;left:-30px;width:17px;height:17px;background:#5cd0ed;opacity:.4;border-radius:50%}.mec-event-grid-novel .mec-event-content h4::after{content:'';position:absolute;top:12px;left:-26px;width:9px;height:9px;background:#5cd0ed;border-radius:50%}.mec-event-grid-novel .mec-event-address,.mec-event-grid-novel .mec-event-detail,.mec-event-grid-novel .mec-event-month{position:relative;padding-left:35px;font-size:15px;line-height:30px;color:rgba(255,255,255,.4)}.mec-event-grid-novel .mec-event-address::before,.mec-event-grid-novel .mec-event-detail::before,.mec-event-grid-novel .mec-event-month::before{position:absolute;top:6px;left:6px;font-size:17px;font-family:simple-line-icons;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1}.mec-event-grid-novel .mec-event-month::before{content:"\e075"}.mec-event-grid-novel .mec-event-detail::before{content:"\e081"}.mec-event-grid-novel .mec-event-address::before{content:"\e096"}.mec-event-grid-novel .mec-event-footer{clear:both;padding:20px 0;border-top:none;background:0 0}.mec-event-grid-novel .mec-event-footer .mec-booking-button{right:auto;left:0;height:42px;width:148px;padding:0 20px;font-size:14px;font-weight:400;line-height:42px;text-align:center;color:#fff;background:0 0;border-color:rgba(255,255,255,.1);border-radius:50px}.mec-event-grid-novel .mec-event-footer .mec-booking-button:hover{background-color:rgba(255,255,255,.1)}.mec-event-grid-novel .mec-event-sharing-wrap{left:175px;cursor:pointer}.mec-event-grid-novel .mec-event-sharing-wrap>li{border-color:rgba(255,255,255,.1);border-radius:50%}.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing{top:-5px;left:0;padding:5px 10px 2px 50px;min-width:150px;width:inherit;height:37px;background-color:rgba(255,255,255,.1);-webkit-box-shadow:none;box-shadow:none;border:none;border-radius:50px}.mec-event-grid-novel .mec-event-sharing-wrap:hover>li{background-color:rgba(255,255,255,.1)}.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing::after,.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing::before{display:none}.mec-event-grid-novel .mec-event-sharing .mec-event-social-icon,.mec-event-grid-novel .mec-event-sharing .mec-event-social-icon a,.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing li i{display:inline}.mec-event-grid-novel .mec-event-sharing .mec-event-social-icon a{padding:0 10px}.mec-event-grid-novel .mec-event-sharing-wrap>li a{color:#fff}.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing li a{color:rgba(255,255,255,.4)}.mec-event-grid-novel .mec-event-sharing-wrap .mec-event-sharing li a:hover{color:rgba(255,255,255,1)}@media only screen and (max-width:1200px){.mec-event-grid-novel .row .col-md-6.col-sm-6{width:100%;float:none}.mec-event-grid-novel .mec-event-image{float:none;margin-top:-20px;margin-bottom:20px}.mec-event-grid-novel .mec-event-detail-wrap{margin-left:20px}.mec-event-grid-novel .mec-event-footer{margin-top:30px}}@media only screen and (max-width:767px){.mec-event-grid-novel .mec-event-footer{margin-top:0;padding-top:30px;margin-bottom:24px}.mec-event-grid-novel .mec-event-footer .mec-booking-button{display:block;position:relative}.mec-event-grid-novel .mec-event-sharing-wrap{left:0;bottom:-55px}.mec-event-grid-novel .mec-event-content h4 a{font-size:20px;line-height:1.3}}.mec-event-cover-modern{position:relative}.mec-event-cover-modern .mec-event-cover-a{background:0 0;position:absolute;color:#fff;bottom:0;left:0;text-decoration:none}.mec-event-cover-modern .mec-event-cover-a .mec-event-overlay{transition:all .5s;opacity:.8;width:100%;height:100%;position:absolute}.mec-event-cover-modern .mec-event-cover-a:hover .mec-event-overlay{opacity:1}.mec-event-cover-modern .mec-event-detail{padding:40px;position:relative}.mec-event-cover-modern .mec-event-cover-a:hover .mec-event-tag{color:#333;transition:all .5s}.mec-event-cover-modern .mec-event-cover-a .mec-event-title:hover{text-decoration:underline}.mec-event-cover-modern .mec-event-tag{background:#fff;display:inline-block;padding:5px 9px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-bottom:24px}.mec-event-cover-modern .mec-event-date{text-transform:uppercase;font-size:17px;font-weight:300}.mec-event-cover-modern .mec-event-title{color:#fff;text-transform:uppercase;font-size:40px;font-weight:700;margin:6px 0}.mec-event-cover-modern .mec-event-place{font-weight:400;font-size:18px;font-family:Roboto,sans-serif}@media only screen and (max-width:767px){.mec-event-cover-modern .mec-event-cover-a{width:100%}}.mec-event-cover-classic{position:relative;overflow:hidden;background:#fff;padding:6px;border:1px solid #e8e8e8}.mec-event-cover-classic .mec-event-overlay{position:absolute;left:6px;right:6px;bottom:6px;top:6px;width:auto;height:auto;background-color:rgba(36,36,36,.4);transition:all .33s ease-in-out}.mec-event-cover-classic:hover .mec-event-overlay{background-color:rgba(36,36,36,.6)}.mec-event-cover-classic .mec-event-content{font-size:15px;color:#fff;position:absolute;bottom:0;padding:50px 35px;transition:all .33s ease-in-out}.mec-event-cover-classic .mec-event-date{font-size:14px;text-transform:uppercase;font-weight:400;line-height:1.6}.mec-event-cover-classic .mec-event-date span{display:block;font-weight:700;font-size:16px}.mec-event-cover-classic .mec-event-title{color:#fff;margin:20px 0 38px;font-size:24px;font-weight:700;text-transform:uppercase;font-style:normal}.mec-event-cover-classic .mec-btn-wrapper{text-align:left}.mec-event-cover-classic .mec-event-icon{font-size:18px;float:left;margin-right:14px;color:#fff;padding:13px}.mec-event-cover-classic .mec-event-button{color:#fff;background-color:#191919;border:2px #191919 solid;padding:12px 20px;letter-spacing:3px;font-size:12px;font-weight:700;font-style:normal;transition:all .22s ease;text-decoration:none}.mec-event-cover-classic .mec-event-button:hover{color:#191919;background-color:#fff;border-color:#fff;border-radius:1px}.mec-event-cover-classic .mec-event-image img{min-width:100%}@media only screen and (max-width:960px){.mec-event-cover-classic .mec-event-content{padding:20px}.mec-event-cover-classic .mec-event-button{font-size:11px;padding:7px 10px;letter-spacing:1px}.mec-event-cover-classic .mec-event-title{font-size:19px;margin:15px 0 25px}.mec-event-cover-classic .mec-event-date{font-size:12px}}@media only screen and (max-width:767px){.mec-event-cover-classic{margin-bottom:30px}}@media only screen and (max-width:479px){.mec-event-cover-classic .mec-event-content{padding:15px;font-size:15px}.mec-event-cover-classic .mec-event-title{font-size:15px;margin:10px 0}.mec-event-cover-classic .mec-event-button{font-size:10px;padding:6px;letter-spacing:1px}.mec-event-cover-classic .mec-event-icon{padding:10px}}.mec-load-more-wrap{text-align:center;display:block;width:100%;padding-top:20px;text-align:center;position:relative}.mec-load-more-button{box-shadow:none;transition:all .21s ease;font-size:12px;font-weight:500;letter-spacing:1px;text-transform:uppercase;background:#fff;color:#767676;border:2px solid #e8e8e8;border-radius:50px;padding:0 28px;margin-bottom:20px;cursor:pointer;line-height:40px;font-family:Montserrat,Helvetica,Arial,sans-serif;height:42px;display:inline-block}.mec-load-more-button:hover{background:#191919;color:#fff;border-color:#191919}.mec-load-more-loading{content:url(../img/ajax-loader.gif);cursor:wait;background:0 0;border-style:none}.mec-load-more-loading:hover{background:0 0}.mec-modal-preloader,.mec-month-navigator-loading{width:100%;height:100%;background:no-repeat rgba(255,255,255,.88) url(../img/ajax-loader.gif) center;border-style:none;position:fixed;left:0;right:0;bottom:0;top:0;z-index:9}.mec-event-calendar-classic .mec-calendar-side .mec-calendar-table{min-height:1024px}.mec-calendar-side .mec-calendar-table{min-height:450px}.mec-skin-weekly-view-events-container.mec-month-navigator-loading{margin-top:0}.mec-calendar.mec-event-calendar-classic .mec-calendar-side{display:block}.mec-skin-daily-view-events-container.mec-month-navigator-loading{margin-top:0}@media only screen and (min-width:961px){.mec-wrap.mec-sm959 .mec-calendar-side .mec-calendar-table{min-height:1px}}@media only screen and (max-width:479px){.mec-calendar-side .mec-calendar-table{min-height:1px}}.mec-event-cover-clean{position:relative;border:1px solid #e6e6e6;padding:8px}.mec-event-cover-clean .mec-event-overlay{height:100%;background-color:rgba(36,36,36,.4);position:absolute;width:100%;left:0;border:8px solid #fff;top:0;transition:all .5s ease-in-out}.mec-event-cover-clean .mec-event-content{color:#fff;position:absolute;bottom:20px;padding:40px 60px;transition:all .5s ease-in-out}.mec-event-cover-clean .mec-event-title{color:#fff;font-weight:700;margin:46px 0 19px;font-size:29px;text-transform:uppercase;text-shadow:0 0 1px rgba(0,0,0,.5)}.mec-event-cover-clean .mec-event-title a{color:#fff;transition:all .5s;text-decoration:none;outline:0;border:none;box-shadow:none}.mec-event-cover-clean .mec-event-title a:hover{text-decoration:underline}.mec-event-cover-clean .mec-event-date{position:absolute;top:-20px;right:60px;color:#fff;width:60px;padding:14px 10px;z-index:1}.mec-event-cover-clean .mec-event-date div{text-align:center;text-transform:uppercase;letter-spacing:1px;line-height:16px}.mec-event-cover-clean .mec-event-date .dday{padding-bottom:15px;border-bottom:1px solid rgba(255,255,255,.5);margin-bottom:13px;font-size:24px}.mec-event-cover-clean .mec-event-date .dmonth{letter-spacing:2px}.mec-event-cover-clean .mec-event-place{font-size:18px;font-family:Roboto,sans-serif}.mec-event-cover-clean .mec-event-image img{width:100%}@media only screen and (max-width:768px){.mec-event-cover-clean .mec-event-content{padding:20px;bottom:5px}.mec-event-cover-clean .mec-event-title{font-size:23px}.mec-event-cover-clean .mec-event-date{right:20px;padding:10px;width:50px}}@media only screen and (max-width:479px){.mec-event-cover-clean .mec-event-content{padding:10px}.mec-event-cover-clean .mec-event-title{font-size:19px;padding-right:25px}.mec-event-cover-clean .mec-event-date{right:-20px;top:-10px}.mec-event-cover-clean .mec-event-detail{font-size:12px}}.mec-month-divider{text-align:center;margin:60px 0 40px 0}.widget .mec-month-divider{margin:10px 0}.mec-month-divider span{text-transform:uppercase;font-size:22px;font-weight:700;padding-bottom:5px;color:#313131;border-bottom:4px solid #ebebeb;width:100%;display:block;padding-bottom:10px;position:relative}.mec-month-divider span:before{border-bottom:4px solid #40d9f1;font-size:6px;content:"";text-align:center;position:absolute;bottom:-4px;margin-left:-30px;left:50%;width:60px}.widget .mec-month-divider span{font-size:13px}.mec-event-list-standard .mec-events-pagination{margin-top:60px;border-top:4px solid #ebebeb;min-height:80px;padding-top:20px}.mec-event-list-standard .mec-events-pagination .mec-events-pag-previous{float:left;margin-left:0}.mec-event-list-standard .mec-events-pagination .mec-events-pag-next{float:right;margin-right:0}.mec-event-list-standard .mec-event-article{position:relative;display:block;margin-bottom:25px;border:1px solid #e9e9e9;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-list-standard .mec-topsec{display:table;width:100%}.mec-event-list-standard .col-md-3.mec-event-image-wrap{padding-left:0}.mec-event-list-standard .mec-event-content{padding-top:15px;padding-right:30px}.mec-event-list-standard .mec-event-title{font-size:29px;font-weight:700;letter-spacing:-1px;margin:0 0 10px}.mec-event-list-standard .mec-event-title a{color:#292929;transition:color .3s ease}.mec-event-list-standard .mec-col-table-c{display:table-cell;height:100%;vertical-align:middle;float:none!important}.mec-event-list-standard .mec-col-table-c.mec-event-meta-wrap{padding-top:15px}.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap{vertical-align:top}.mec-topsec .mec-event-image{line-height:1px}.mec-event-list-standard .mec-event-meta-wrap{border-left:1px solid #eee}.mec-event-list-standard .mec-time-details{text-transform:uppercase;font-size:11px;font-weight:300;padding-top:0;text-align:left;padding-left:30px}.mec-event-list-standard .mec-event-meta .mec-event-address{font-style:normal;letter-spacing:0;font-size:13px;color:#8a8a8a}.mec-event-list-standard .mec-event-meta span.mec-event-d,.mec-event-list-standard .mec-event-meta span.mec-event-m{font-size:17px;font-weight:700;padding-right:6px;color:#444;text-transform:uppercase}.mec-event-list-standard .mec-date-details,.mec-event-list-standard .mec-time-details,.mec-event-list-standard .mec-venue-details{position:relative;padding-left:28px;margin-bottom:10px}.mec-event-list-standard .mec-date-details:before,.mec-event-list-standard .mec-time-details:before,.mec-event-list-standard .mec-venue-details:before{content:"\f041";font-family:fontawesome;position:absolute;left:6px;font-size:15px}.mec-event-list-standard .mec-date-details:before{content:"\f073"}.mec-event-list-standard .mec-time-details:before{content:"\f017"}.mec-event-list-minimal .mec-event-title a{color:#292929;transition:color .3s ease}.mec-event-meta-wrap .mec-price-details{margin-bottom:10px}.mec-price-details i{margin-right:5px;vertical-align:text-top}.mec-event-meta-wrap .mec-event-meta .mec-price-details i:before{font-size:15px}@media only screen and (max-width:960px){.mec-event-list-standard .mec-topsec{display:block}.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap{display:block;width:40%}.mec-event-list-standard .mec-col-table-c.mec-event-content-wrap{display:block;min-height:230px}.mec-event-list-standard .mec-event-meta-wrap{display:block;border-left:none;border-top:1px solid #eee;width:100%;float:none;padding-top:20px}}@media only screen and (min-width:480px) and (max-width:960px){.mec-event-list-standard .mec-col-table-c.mec-event-content-wrap,.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap{display:table-cell}}@media only screen and (max-width:479px){.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap,.mec-event-list-standard .mec-col-table-c.mec-event-image-wrap img{float:none;width:100%;padding:0}.mec-event-list-standard .mec-col-table-c.mec-event-content-wrap{padding:10px 10px 10px 30px}}.mec-wrap .mec-events-cal-links{margin-bottom:0}.mec-single-event #mec-wrap{padding:0;margin-top:35px}.mec-wrap .mec-single-title{margin-top:0;margin-bottom:30px;font-weight:700;font-size:33px}.mec-single-event .mec-event-content{padding:40px 0 30px;margin-bottom:10px}.mec-single-event .mec-events-meta-group-booking,.mec-single-event .mec-frontbox{margin-bottom:30px;padding:20px 30px;background:#fff;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-wrap #main-content{overflow:hidden;padding-top:35px}.mec-single-event .mec-map-get-direction-address-cnt{position:relative}.mec-single-event .mec-map-get-direction-address-cnt input.mec-map-get-direction-address{width:100%;height:46px;padding:13px 10px;margin-bottom:0;background:#fcfcfc;border:1px solid #e0e0e0;border-radius:0;box-shadow:inset 0 2px 5px rgba(0,0,0,.081)}.mec-single-event .mec-map-get-direction-address-cnt input.mec-map-get-direction-address:focus{color:#444;background:#fff;border-color:#b0b0b0;box-shadow:0 0 3px rgba(0,0,0,.2)}.mec-single-event .mec-map-get-direction-btn-cnt input{width:100%}.mec-single-event .mec-map-get-direction-reset{position:absolute;z-index:2;top:5px;right:10px;font-size:11px;cursor:pointer}.mec-events-meta-group-tags{margin-top:20px}.mec-events-meta-group-tags a{display:inline-block;color:#444;font-size:11px;text-transform:uppercase;letter-spacing:1.5px;font-weight:500;padding:3px 7px;border:1px solid #ddd;border-radius:2px;background:#fff;margin:1px 3px}.mec-events-meta-group-tags a:hover{text-decoration:underline;background:#f9f9f9}.mec-local-time-details li{list-style:none}.mec-single-event:not(.mec-single-modern) .mec-local-time-details{background:#f7f7f7;padding:12px 14px 8px;margin-bottom:12px;vertical-align:baseline;position:relative;border:none}.mec-single-event:not(.mec-single-modern) .mec-local-time-details ul{margin:0;padding-left:35px}.mec-single-event:not(.mec-single-modern) .mec-local-time-details h3{border:none;padding-left:15px}.mec-single-event:not(.mec-single-modern) .mec-local-time-details h3:before{display:none}.mec-single-event.mec-single-modern i.mec-sl-speedometer{display:none}.mec-single-event .mec-events-meta-group-booking{padding-bottom:30px}.mec-single-event .mec-events-meta-group-booking ul{list-style:none;margin-left:0;padding-left:0}.mec-single-event .mec-events-meta-group-booking ul li{padding:0;list-style:none;margin-top:40px}.mec-single-event .mec-events-meta-group-booking h4{margin-bottom:20px;font-size:23px;font-weight:700}.mec-single-event .mec-events-meta-group-booking li h4{font-size:19px}.mec-single-event .mec-events-meta-group-booking button,.mec-single-event .mec-events-meta-group-booking input{border-radius:0;margin-bottom:6px}.mec-single-event .mec-events-meta-group-booking button{min-width:170px;margin-top:5px}.mec-single-event .mec-events-meta-group-booking button{margin-left:15px}.mec-single-event .mec-book-form-coupon button{margin-left:0}.mec-single-event .mec-book-form-gateway-checkout button{margin-left:0}.mec-single-event .mec-book-first,.mec-single-event .mec-event-tickets-list{padding-left:15px;padding-right:15px}.mec-single-event label.mec-fill-attendees{margin-left:15px!important}.mec-single-event .mec-events-meta-group-booking .mec-event-ticket-available{display:block;margin-bottom:20px;margin-top:-17px;font-size:11px;color:#8a8a8a}.mec-single-event .mec-events-meta-group-booking .mec-book-price-total{display:inline-block;margin-bottom:10px;font-size:26px;color:#39c36e;font-weight:700;padding:10px 0}.mec-single-event .mec-events-meta-group-booking form{margin:0}.mec-single-event .mec-events-meta-group-booking h5 span,.mec-single-event .mec-events-meta-group-booking label{color:#424242;font-size:12px;font-weight:300;letter-spacing:0;margin:3px 0;display:block;clear:none;padding:5px 1em 3px 0}.mec-single-event .mec-events-meta-group-booking h5 span{display:inline-block}.mec-single-event .mec-events-meta-group-booking h5 span.mec-ticket-variation-name{padding-right:5px;text-transform:capitalize}.mec-single-event .mec-events-meta-group-booking input::-webkit-input-placeholder{color:#aaa}.mec-single-event .mec-events-meta-group-booking input:-moz-placeholder{color:#aaa}.mec-single-event .mec-events-meta-group-booking input[type=date],.mec-single-event .mec-events-meta-group-booking input[type=email],.mec-single-event .mec-events-meta-group-booking input[type=number],.mec-single-event .mec-events-meta-group-booking input[type=password],.mec-single-event .mec-events-meta-group-booking input[type=tel],.mec-single-event .mec-events-meta-group-booking input[type=text],.mec-single-event .mec-events-meta-group-booking select,.mec-single-event .mec-events-meta-group-booking textarea{display:block;background:#fcfcfc;min-height:42px;min-width:180px;font-size:13px;border:1px solid #e0e0e0;padding:13px 10px;width:330px;margin-bottom:20px;box-shadow:inset 0 2px 4px rgba(0,0,0,.051);clear:both}.wbmec-mandatory{padding-left:5px;font-size:14px}.mec-single-event .mec-events-meta-group-booking .mec-red-notification input,.mec-single-event .mec-events-meta-group-booking .mec-red-notification select,.mec-single-event .mec-events-meta-group-booking .mec-red-notification textarea{border:1px solid #ff3c3c}.mec-single-event .mec-events-meta-group-booking .mec-red-notification input[type=checkbox],.mec-single-event .mec-events-meta-group-booking .mec-red-notification input[type=radio]{outline:1px solid #ff3c3c}@media only screen and (max-width:479px){.mec-single-event .mec-events-meta-group-booking input[type=date],.mec-single-event .mec-events-meta-group-booking input[type=email],.mec-single-event .mec-events-meta-group-booking input[type=number],.mec-single-event .mec-events-meta-group-booking input[type=password],.mec-single-event .mec-events-meta-group-booking input[type=tel],.mec-single-event .mec-events-meta-group-booking input[type=text],.mec-single-event .mec-events-meta-group-booking select,.mec-single-event .mec-events-meta-group-booking textarea{width:100%}}.mec-single-event .mec-events-meta-group-booking input[type=email]:focus,.mec-single-event .mec-events-meta-group-booking input[type=number]:focus,.mec-single-event .mec-events-meta-group-booking input[type=password]:focus,.mec-single-event .mec-events-meta-group-booking input[type=tel]:focus,.mec-single-event .mec-events-meta-group-booking input[type=text]:.mec-single-event .mec-events-meta-group-booking input[type=date],.mec-single-event .mec-events-meta-group-booking select:focus,.mec-single-event .mec-events-meta-group-booking textarea:focus,focus{border:1px solid #aaa;color:#444;background:#fff;-moz-box-shadow:0 0 3px rgba(0,0,0,.2);-webkit-box-shadow:0 0 3px rgba(0,0,0,.2);box-shadow:0 0 3px rgba(0,0,0,.2);outline:0}.mec-single-event .mec-events-meta-group-booking input[type=checkbox],.mec-single-event .mec-events-meta-group-booking input[type=radio]{margin-right:6px;margin-top:5px;min-height:20px;clear:none;margin:0 0 0 2px}.lity-container .mec-events-meta-group-booking input[type=radio]:before,.mec-single-event .mec-events-meta-group-booking input[type=radio]:before{content:"";display:inline-block;background:#fff;border-radius:18px;width:18px;height:18px;margin:-1px 0 0 -3px;cursor:pointer;border:2px solid #e1e7ed;box-shadow:0 2px 15px -3px rgba(69,77,89,.32)}.lity-container .mec-events-meta-group-booking input[type=radio]:checked:before,.mec-single-event .mec-events-meta-group-booking input[type=radio]:checked:before{border:7px solid #008aff;background:#fff;box-shadow:0 3px 16px -3px #008aff}.lity-container .mec-events-meta-group-booking input[type=radio],.mec-single-event .mec-events-meta-group-booking input[type=radio]{min-height:0;margin:0;margin-right:6px}.mec-single-event .mec-events-meta-group-booking input[type=checkbox]{float:left}.lity-container .mec-events-meta-group-booking .mec_book_first_for_all,.mec-single-event .mec-events-meta-group-booking .mec_book_first_for_all{display:none}.mec-events-meta-group-booking ul.mec-book-price-details{list-style:none;border:1px solid #eee;padding:0;overflow:hidden}.mec-events-meta-group-booking ul.mec-book-price-details li{font-size:15px;color:#a9a9a9;list-style:none;padding:13px 18px;margin:0;float:left;border-right:1px solid #eee}.mec-events-meta-group-booking ul.mec-book-price-details li:last-child{border-right:none}.mec-events-meta-group-booking ul.mec-book-price-details li span.mec-book-price-detail-amount{font-weight:700;font-size:21px;color:#222}.lity-container .mec-events-meta-group-booking label.wn-checkbox-label,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label{height:14px;width:14px;background-color:transparent;border:1px solid #d4d4d4;position:relative;display:inline-block;-moz-transition:border-color ease .2s;-o-transition:border-color ease .2s;-webkit-transition:border-color ease .2s;transition:border-color ease .2s;cursor:pointer;box-shadow:0 2px 16px -2px rgba(0,0,0,.2);vertical-align:middle;margin-right:3px;margin-top:-2px}.lity-container .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label,.mec-single-event .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label{border-color:#008aff;box-shadow:0 2px 14px -3px #008aff}.lity-container .mec-events-meta-group-booking label.wn-checkbox-label:after,.lity-container .mec-events-meta-group-booking label.wn-checkbox-label:before,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label:after,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label:before{position:absolute;height:0;width:1px;background-color:#008aff;display:inline-block;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;-webkit-transform-origin:left top;transform-origin:left top;content:'';-webkit-transition:opacity ease .5;-moz-transition:opacity ease .5;transition:opacity ease .5}.lity-container .mec-events-meta-group-booking label.wn-checkbox-label:before,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label:before{top:8px;left:7px;box-shadow:0 0 0 2px #fff;-moz-transform:rotate(-145deg);-ms-transform:rotate(-145deg);-o-transform:rotate(-145deg);-webkit-transform:rotate(-145deg);transform:rotate(-145deg)}.lity-container .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label::before,.mec-single-event .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label::before{height:12px;-moz-animation:dothatopcheck .16s ease 0s forwards;-o-animation:dothatopcheck .16s ease 0s forwards;-webkit-animation:dothatopcheck .16s ease 0s forwards;animation:dothatopcheck .16s ease 0s forwards}.lity-container .mec-events-meta-group-booking label.wn-checkbox-label:after,.mec-single-event .mec-events-meta-group-booking label.wn-checkbox-label:after{top:6px;left:3px;-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.lity-container .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label::after,.mec-single-event .mec-events-meta-group-booking input[type=checkbox]:checked+.wn-checkbox-label::after{-moz-animation:dothabottomcheck 80ms ease 0s forwards;-o-animation:dothabottomcheck 80ms ease 0s forwards;-webkit-animation:dothabottomcheck 80ms ease 0s forwards;animation:dothabottomcheck 80ms ease 0s forwards;height:4px}.mec-single-event .mec-events-meta-group-booking button[type=submit]:after,.mec-single-event a.button:after{display:none;font-family:simple-line-icons;content:"\e098";margin-left:4px;-webkit-animation:rotating 1.2s linear infinite;-moz-animation:rotating 1.2s linear infinite;-ms-animation:rotating 1.2s linear infinite;-o-animation:rotating 1.2s linear infinite;animation:rotating 1.2s linear infinite}.mec-single-event .mec-events-meta-group-booking button[type=submit].loading:after,.mec-single-event a.button.loading:after{display:inline-block}.mec-single-event .mec-event-export-module{display:block}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul{display:table;width:100%}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li{display:table-cell}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li:last-child{text-align:right}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li a:hover{color:#fff}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul{padding-left:0;margin:15px 5px}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting{padding-left:0;margin:0}.mec-ticket-price{margin-left:10px;font-size:13px;font-weight:300}.mec-book-reg-field-checkbox label,.mec-book-reg-field-radio label{line-height:1.36}.mec-book-reg-field-checkbox input[type=checkbox],.mec-book-reg-field-radio input[type=radio]{float:left;margin-right:5px!important}.mec-ticket-available-spots .mec-event-ticket-description,.mec-ticket-available-spots .mec-event-ticket-price{font-size:11px}.mec-book-ticket-container .mec-reg-mandatory:nth-child(2) label:after,.mec-book-ticket-container .mec-reg-mandatory:nth-child(3) label:after,.mec-book-ticket-container .wbmec-mandatory{content:"";color:red;width:50px;height:50px;font-size:14px;padding-left:5px}@media only screen and (max-width:767px){.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li{width:100%;min-height:40px;margin-bottom:15px;text-align:center;float:none;display:block}.mec-single-event .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li a{width:100%;padding-left:0;padding-right:0;text-align:center;display:block;font-size:12px}}.mec-single-event .mec-events-meta-group{margin-bottom:0}@media only screen and (max-width:767px){.mec-single-event .mec-events-meta-group-booking{margin-bottom:30px}}.mec-single-event .mec-event-meta dt,.mec-single-event .mec-event-meta h3{text-transform:uppercase;font-size:16px;font-weight:700;padding-bottom:5px;display:inline;color:#000;padding-left:10px}.mec-single-event .mec-event-meta h6{text-transform:uppercase;font-size:13px;padding-bottom:5px;display:inline;color:#222;padding-left:0}.mec-single-event .mec-event-meta .mec-events-event-categories a,.mec-single-event .mec-event-meta dd{font-size:14px;color:#8d8d8d}.mec-single-event .mec-event-meta .mec-location dd.author{color:#3c3b3b}.mec-single-event .mec-event-meta dd{margin:0;padding-left:35px}.mec-single-event .mec-event-meta dd.mec-events-event-categories{min-height:35px;line-height:35px}.mec-single-event .mec-event-meta dd.mec-events-event-categories:first-of-type{padding-top:5px}.mec-single-event .mec-event-meta dd.mec-events-event-categories:last-of-type{border-bottom:0}.mec-single-event .mec-event-meta dd a{color:#8d8d8d;transition:all .2s ease}.mec-single-event .mec-event-meta dd a i:before{font-size:16px!important}.mec-single-event .mec-event-meta dd a i{vertical-align:top;margin-right:8px}.mec-single-event .mec-event-meta dl{margin-bottom:0}.mec-single-event .mec-event-meta .mec-events-event-cost{font-size:18px}.mec-single-event .mec-event-meta .mec-events-address{color:#a9a9a9;margin-bottom:3px}.mec-single-event .mec-event-meta .mec-events-meta-group-venue .author{margin-bottom:0;color:#8d8d8d;font-size:13px}.mec-single-event .mec-events-event-image{margin-bottom:0}.mec-single-event h2.mec-single-event-title{margin-bottom:30px;font-weight:700;font-size:33px}.mec-single-event .mec-booking-button{border-bottom:none;letter-spacing:.5px;line-height:48px;height:76px;transition:all .5s ease;color:#fff;padding:16px;display:block;text-align:center;font-size:16px}.mec-single-event .mec-booking-button:hover{background-color:#101010!important}.mec-single-event .mec-event-tags a{display:inline-block;color:#444;font-size:11px;text-transform:uppercase;letter-spacing:1.5px;font-weight:500;padding:3px 7px;border:1px solid #ddd;border-radius:2px;background:#fff;margin:1px 3px}.mec-single-event .mec-event-tags:before{font-size:24px;color:#303030;margin-right:5px;content:"\f02c";font-family:fontawesome}.mec-single-event .mec-event-tags{padding-top:13px}.mec-single-event .mec-event-sharing{margin:30px 0 10px}.mec-region.mec-events-abbr,.mec-single-event .mec-street-address{font-style:normal;font-size:13px}.mec-events-meta-group.mec-events-meta-group-venue:before,.mec-single-event-date:before,.mec-single-event-time:before{color:#40d9f1}.mec-single-event .mec-event-social{text-align:center}.mec-single-event .mec-event-social h3{text-transform:uppercase;font-size:15px;font-weight:700;padding-bottom:5px;color:#313131;border-bottom:4px solid #ebebeb;width:100%;display:block;padding-bottom:10px;position:relative}.mec-single-event .mec-social-single:before{padding:13px 35px;border-bottom:4px solid #40d9f1;font-size:6px;content:"";text-align:center;position:absolute;bottom:-4px;margin-left:39px}.mec-single-event .mec-event-social .event-sharing{margin-top:30px}.mec-single-event .mec-event-social ul{list-style:none;margin-left:0}.mec-single-event .mec-event-social li.mec-event-social-icon{display:inline-block}.mec-single-event .mec-event-social li.mec-event-social-icon a{display:inline-block;color:#fff;width:40px;height:40px;padding:9px;font-size:16px;margin-right:5px}.mec-single-event .mec-event-social a.facebook{background:#3b5996}.mec-single-event .mec-event-social a.facebook:hover{background:#28385c}.mec-single-event .mec-event-social a.twitter{background:#00acee}.mec-single-event .mec-event-social a.twitter:hover{background:#0087bd}.mec-single-event .mec-event-social a.vimeo{background:#0dadd6}.mec-single-event .mec-event-social a.vimeo:hover{background:#0a85a3}.mec-single-event .mec-event-social a.dribble{background:#d53e68}.mec-single-event .mec-event-social a.dribble:hover{background:#bf4c78}.mec-single-event .mec-event-social a.youtube{background:#cb322c}.mec-single-event .mec-event-social a.youtube:hover{background:#992622}.mec-single-event .mec-event-social a.pinterest{background:#cb2027}.mec-single-event .mec-event-social a.pinterest:hover{background:#99181d}.mec-single-event .mec-event-social a.google{background:#c3391c}.mec-single-event .mec-event-social a.google:hover{background:#99181f}.mec-single-event .mec-event-social a.linkedin{background:#0073b2}.mec-single-event .mec-event-social a.linkedin:hover{background:#005380}.mec-single-event .mec-event-social a.email{background:#ff5d5e}.mec-single-event .mec-event-social a.email:hover{background:#cc4949}.mec-single-event .mec-event-social a.vk{background:#5b88bd}.mec-single-event .mec-event-social a.vk:hover{background:#3d608a}.mec-single-event .mec-event-social a.rss{background:#f29a1d}.mec-single-event .mec-event-social a.rss:hover{background:#cc7400}.mec-single-event .mec-event-social a.instagram{background:#457399}.mec-single-event .mec-event-social a.instagram:hover{background:#2e4d66}.mec-single-event .mec-event-social a.other-social{background:#ff5d5e}.mec-single-event .mec-event-social a.other-social:hover{background:#cc4949}.mec-single-event .mec-event-social{text-align:center}.mec-single-event .mec-events-meta-group-booking form>h4,.mec-single-event .mec-frontbox-title{text-transform:uppercase;font-size:15px;font-weight:700;color:#313131;border-bottom:4px solid #ebebeb;width:100%;display:block;padding-bottom:10px;position:relative;text-align:center}.mec-single-event .mec-events-meta-group-booking form>h4:before,.mec-single-event .mec-frontbox-title:before{padding:1px 35px;border-bottom:4px solid #40d9f1;font-size:6px;content:"";text-align:center;position:absolute;bottom:-4px;margin-left:-35px;left:50%}.mec-single-event .mec-events-meta-group-booking input[data-stripe=exp-month],.mec-single-event .mec-events-meta-group-booking input[data-stripe=exp-year]{width:47%!important;margin-right:12px;margin-top:5px;display:inline-block!important}@media(max-width:768px){.mec-single-event .mec-events-meta-group-booking input[data-stripe=exp-month],.mec-single-event .mec-events-meta-group-booking input[data-stripe=exp-year]{width:100%!important;margin-right:0;display:block!important}}.mec-event-meta i:before{font-size:20px;vertical-align:middle}.mec-event-meta .mec-single-event-additional-organizers i:before,.mec-event-meta .mec-single-event-organizer i:before{font-size:14px;vertical-align:baseline}#mec-wrap .mec-events-day-time-slot .mec-events-content{float:left;width:33%;padding:0 15px}#mec-wrap .mec-events-day-time-slot .mec-events-event-image{padding-left:0}#mec-events-content .mec-events-abbr{color:#8d8d8d;font-size:14px}.mec-single-event .mec-events-content{margin-bottom:30px}.mec-single-event .mec-organizer-url a{word-wrap:break-word}.mec-single-event #headline{margin:0 0 10px}.mec-single-event #headline h2{padding:0}.mec-single-event .mec-events-meta-group.mec-events-meta-group-gmap .mec-events-venue-map{margin-top:0;padding:8px;border:1px solid #e5e5e5;border-radius:7px}#mec-events-gmap-0{height:325px!important}.mec-events-list .mec-events-day-time-slot .mec-events-event-meta{width:33%;float:left;padding:40px;height:auto;margin:0}.mec-events-day-time-slot .mec-events-content.description.entry-summary{font-size:15px;font-weight:300;color:#8d8d8d}.mec-events-day-time-slot .type-mec_events h2{font-size:28px;padding-bottom:20px}.mec-events-day .mec-events-day-time-slot .type-mec_events{margin:0}.mec-events-day .mec-events-day-time-slot h5{background-color:#8d8d8d}.mec-single-event .mec-event-meta .mec-single-event-additional-organizers .mec-events-single-section-title,.mec-single-event .mec-event-meta .mec-single-event-organizer .mec-events-single-section-title,.mec-single-event .mec-events-meta-date h3{padding-left:0;margin:10px;display:inline-block}.mec-single-event .mec-events-meta-date h3{width:100%}.mec-single-event .mec-events-event-image{border:0}.mec-single-event .mec-events-venue-map{padding:0}.mec-event-cost,.mec-event-more-info,.mec-event-website,.mec-events-meta-date,.mec-single-event-additional-organizers,.mec-single-event-category,.mec-single-event-date,.mec-single-event-label,.mec-single-event-location,.mec-single-event-organizer,.mec-single-event-time{background:#f7f7f7;padding:12px 14px 8px;margin-bottom:12px;vertical-align:baseline;position:relative}.mec-single-event .mec-events-meta-date dd,.mec-single-event .mec-single-event-additional-organizers dd,.mec-single-event .mec-single-event-organizer dd{padding-left:0;margin-bottom:10px}.mec-single-event .mec-events-meta-date dd span,.mec-single-event .mec-single-event-additional-organizers dd span,.mec-single-event .mec-single-event-organizer dd span{display:block;padding-left:12px;color:#8d8d8d}.mec-single-event .mec-events-meta-date i,.mec-single-event .mec-single-event-additional-organizers i,.mec-single-event .mec-single-event-organizer i{margin-right:10px;margin-left:12px}.mec-events-meta-group.mec-events-meta-group-venue dl{margin-bottom:0}address.mec-events-address{line-height:19px;font-style:normal;font-size:12px}.mec-single-event .mec-event-content dt{margin-top:5px}.mec-single-event .mec-single-event-additional-organizers .mec-single-event-additional-organizer{margin-bottom:15px;padding-bottom:5px;border-bottom:1px solid #e4e4e4}.mec-single-event .mec-single-event-additional-organizers .mec-single-event-additional-organizer:last-child{margin-bottom:0;padding-bottom:0;border:none}.mec-event-schedule-content{border-left:4px solid #f0f0f0;padding-top:10px;margin-top:30px;margin-left:25px;margin-bottom:20px;color:#8a8a8a}.mec-event-schedule-content dl{padding-left:24px;font-size:12px;position:relative;margin-bottom:35px}.mec-event-schedule-content dl:before{content:'';display:block;position:absolute;left:0;top:4px;width:20px;height:0;border-top:4px solid #f0f0f0}.mec-event-schedule-content dl dt{margin:0 0 10px;line-height:1.16}.mec-event-schedule-content dl dt.mec-schedule-title{font-size:13px;color:#5a5a5a;font-weight:700}.mec-event-schedule-content dl dt.mec-schedule-description{font-weight:300}.mec-event-schedule-content .mec-schedule-speakers{background:#f7f7f7;padding:10px}.mec-wrap .mec-event-schedule-content h6{font-size:13px;color:#5a5a5a;font-weight:700;display:inline-block}.mec-wrap .mec-event-schedule-content a{font-weight:400;color:#5a5a5a;transition:all .1s ease}.mec-single-event .mec-speakers-details ul li{list-style:none;background:#f7f7f7;padding:5px 5px 18px 5px;margin-top:14px}.mec-single-event .mec-speakers-details ul li a{-webkit-transition:.2s all ease;transition:.2s all ease}.mec-single-event .mec-speakers-details ul li .mec-speaker-avatar a img{float:left;border-radius:50%;transition:.2s all ease;border:2px solid transparent;width:68px;height:68px}.mec-single-event .mec-speakers-details ul li .mec-speaker-avatar a:hover img{border-color:#40d9f1}.mec-single-event .mec-speakers-details ul li .mec-speaker-name{display:inline-block;margin-top:6px;font-size:14px;text-transform:capitalize;font-weight:700;padding-left:8px}.mec-single-event .mec-speakers-details ul li .mec-speaker-job-title{display:block;font-size:12px;margin-top:-1px;padding-left:75px}.mec-single-event-location img,.mec-single-event-organizer img{margin-bottom:10px;width:100%}.mec-qrcode-details{text-align:center}.mec-time-comment{font-size:11px}.mec-wrap .mec-attendees-list-details p{font-weight:300;margin:20px 0 0 0;color:#8d8d8d}.mec-wrap .mec-attendees-list-details li{list-style:none;display:block;margin-top:15px}.mec-wrap .mec-attendees-list-details li .mec-attendee-avatar{display:inline-block}.mec-wrap .mec-attendees-list-details li .mec-attendee-profile-link{display:inline-block;vertical-align:top;margin-left:10px}.mec-attendees-list-details ul{margin-bottom:0}.mec-attendees-list-details .mec-attendee-profile-link a{color:#8d8d8d}.mec-attendees-list-details .mec-attendee-profile-link span{display:block;color:#000}.mec-calendar{margin-bottom:20px;border:1px solid #e8e8e8;width:100%;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-calendar .mec-calendar-topsec{display:table;background:#fff}.mec-calendar .mec-calendar-topsec .mec-calendar-events-sec{display:none}.mec-calendar .mec-calendar-side{width:590px;display:table-cell;padding:40px;position:relative;text-align:center;box-shadow:0 1px 5px 6px rgba(0,0,0,.005) inset}.mec-calendar .mec-calendar-events-side{display:table-cell;height:100%;border-left:1px solid #efefef;padding:40px;width:100%}.mec-calendar .mec-calendar-events-side .mec-table-side-day{width:46px;height:46px;margin:0 auto 20px;position:relative;text-align:center;line-height:46px;border:1px solid #40d9f1;border-radius:50%;font-size:12px;font-weight:600;padding:0}.mec-calendar .mec-calendar-events-side .mec-table-side-title{text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:3px;margin-bottom:14px}.mec-calendar .mec-calendar-header{position:relative;width:560px;margin-top:8px;margin-bottom:16px}.mec-calendar .mec-calendar-header h2{text-transform:uppercase;font-size:22px;font-weight:700;color:#333}.mec-calendar .mec-event-footer{width:auto;min-height:60px}.mec-calendar dl{display:table;margin:0;border:none;padding:0;table-layout:fixed}.mec-calendar dt{display:table-cell;transition:all .66s ease;color:#4d4d4d;background:#fff;border-radius:44px;font-size:14px;width:80px;height:80px;line-height:80px;text-align:center}.mec-calendar .mec-calendar-table .mec-no-event{display:none}.mec-calendar .mec-calendar-table-head dt{font-weight:700;text-transform:uppercase;font-size:15px}.mec-calendar .mec-calendar-row dt:hover{background:#f4f4f4}.mec-calendar .mec-table-nullday{color:#cacaca}.mec-calendar.mec-box-calendar .mec-table-nullday:last-child{border-right:1px solid #eaeaea}.mec-calendar .mec-next-month:hover,.mec-calendar .mec-prev-month:hover{background:#f4f4f4}.mec-calendar .mec-selected-day,.mec-calendar .mec-selected-day:hover{background:#40d9f1;color:#fff}.mec-calendar .mec-selected-day a{color:#fff}.mec-calendar .mec-has-event{position:relative}.mec-calendar .mec-calendar-row dt.mec-has-event:hover{background:#40d9f1}.mec-calendar .mec-has-event a{cursor:pointer;display:block;width:100%;height:100%;border-radius:50%;color:#4d4d4d;transition:all .25s ease;text-decoration:none;box-shadow:none}.mec-calendar .mec-calendar-row dt.mec-has-event.mec-selected-day a,.mec-calendar .mec-calendar-row dt.mec-has-event:hover a{color:#fff}.mec-calendar .mec-has-event:after{background-color:#40d9f1;border-radius:50%;display:block;content:'';width:8px;height:8px;bottom:14px;left:50%;margin:-4px 0 0 -4px;position:absolute;transition:all .25s ease}.mec-calendar .mec-calendar-row dt.mec-has-event:hover:after{background-color:#fff}.mec-calendar .mec-has-event.mec-selected-day:after{display:none}.mec-calendar .mec-event-article{text-align:left;margin-bottom:0;padding-bottom:25px;padding-top:26px;border-top:1px solid #efefef;transition:all .33s ease}.mec-calendar .mec-event-article:hover{background-color:#fafafa}.mec-calendar .mec-event-article .mec-event-time{font-size:11px;line-height:1.1;margin:0}.mec-calendar .mec-event-article .mec-event-title{font-size:13px;padding:0;margin:10px 0 8px;font-weight:700;text-transform:uppercase}.mec-calendar .mec-event-article .mec-event-title a{text-decoration:none;color:#494949;transition:color .3s ease}.mec-calendar .mec-event-article .mec-event-title a:hover{color:#40d9f1}.mec-calendar .mec-event-article .mec-event-image,.mec-calendar .mec-event-list-classic .mec-event-image img{width:65px;height:auto}.mec-calendar .mec-event-article .mec-event-image{float:left;margin-right:20px;width:65px;height:auto}.mec-calendar .mec-event-article .mec-event-detail{font-size:13px;line-height:1.3;font-family:Roboto,sans-serif;color:#9a9a9a;margin-bottom:0}.mec-calendar .mec-calendar-side .mec-next-month,.mec-calendar .mec-calendar-side .mec-previous-month{cursor:pointer;position:absolute;top:0;min-width:50px;height:50px;line-height:50px;text-align:center;background:#fff;color:#a9a9a9;font-size:12px;letter-spacing:1px;text-transform:uppercase;padding-left:10px;padding-right:10px;border:1px solid #efefef;border-top:none;box-shadow:0 2px 0 0 rgba(0,0,0,.015);transition:all .33s ease}.mec-calendar .mec-calendar-side .mec-next-month i,.mec-calendar .mec-calendar-side .mec-previous-month i{font-size:12px;color:#40d9f1;cursor:pointer}.mec-calendar .mec-calendar-side .mec-next-month:hover,.mec-calendar .mec-calendar-side .mec-previous-month:hover{background-color:#f9f9f9;color:#40d9f1}.mec-calendar .mec-calendar-side .mec-previous-month{left:0;border-bottom-right-radius:6px;border-left:none}.mec-calendar .mec-calendar-side .mec-next-month{right:0;border-bottom-left-radius:6px;border-right:none}@media only screen and (min-width:961px){.mec-wrap.mec-sm959 .mec-calendar:not(.mec-event-calendar-classic):not(.mec-calendar-weekly) .mec-has-event:after{width:6px;height:6px;bottom:6px}.mec-wrap.mec-sm959 .mec-calendar:not(.mec-event-calendar-classic):not(.mec-calendar-weekly) .mec-calendar-side{width:370px}.mec-wrap.mec-sm959 .mec-calendar:not(.mec-event-calendar-classic):not(.mec-calendar-weekly) .mec-calendar-header{position:relative;width:350px;margin-top:30px;margin-bottom:20px;padding-top:20px}.mec-wrap.mec-sm959 .mec-calendar:not(.mec-event-calendar-classic):not(.mec-calendar-weekly) dt{width:50px;height:50px;line-height:50px}.mec-wrap.mec-sm959 .mec-calendar.mec-event-calendar-classic dl dt{height:110px}}@media only screen and (max-width:1200px){.mec-calendar .mec-has-event:after{width:6px;height:6px;bottom:6px}.mec-calendar .mec-calendar-side{width:370px}.mec-calendar .mec-calendar-header{position:relative;width:350px;margin-top:30px}.mec-calendar dt{width:50px;height:50px;line-height:50px}}@media only screen and (max-width:767px){.mec-calendar .mec-calendar-header h2{font-size:18px}.mec-calendar .mec-calendar-topsec{width:100%}.mec-calendar .mec-calendar-side{width:100%;display:block;padding:30px}.mec-calendar .mec-calendar-header{width:auto}.mec-calendar .mec-calendar-events-side{width:100%;display:block;height:100%;border-left:none;border-top:1px solid #efefef;padding:20px}.mec-calendar dl{width:100%}.mec-calendar dt{width:14%;height:60px;line-height:60px;border-radius:50px}}@media only screen and (max-width:479px){.mec-calendar .mec-has-event:after{width:4px;height:4px}.mec-calendar .mec-calendar-header h2{font-size:16px;margin-top:33px}.mec-calendar dt{height:38px;line-height:38px}.mec-calendar .mec-event-list-classic .mec-event-detail,.mec-calendar .mec-event-list-classic .mec-event-title{font-size:12px}.mec-calendar .mec-event-list-classic .mec-event-time{font-size:10px}}.mec-box-calendar.mec-calendar .mec-has-event a,.mec-box-calendar.mec-calendar dt{border-radius:0}.mec-box-calendar.mec-calendar .mec-calendar-header{margin-top:2px;margin-bottom:30px}.mec-box-calendar.mec-calendar dt{border-bottom:1px solid #eaeaea;border-left:1px solid #eaeaea}.mec-box-calendar.mec-calendar dl dt:last-child{border-right:1px solid #eaeaea}.mec-box-calendar.mec-calendar .mec-calendar-table-head dt{border-top:1px solid #eaeaea;background-color:#f8f8f8}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-table-head dt{background-color:#f4f4f4}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month,.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{border-radius:2px;top:40px;border:1px solid #eee;height:30px;line-height:30px;z-index:1}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{left:60px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month{right:60px}.mec-box-calendar.mec-calendar .mec-calendar-side{box-shadow:none}.mec-box-calendar.mec-calendar .mec-calendar-events-side{border:none}.mec-box-calendar.mec-calendar .mec-calendar-events-side .mec-table-side-day{border-radius:2px}.mec-box-calendar.mec-calendar h4.mec-month-label{position:relative;width:560px;margin-top:2px;margin-bottom:30px;text-transform:uppercase;font-size:22px;font-weight:700;color:#333}.mec-widget .mec-box-calendar.mec-calendar h4.mec-month-label{width:100%;margin-top:8px;font-size:13px}@media only screen and (max-width:1200px){.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{left:42px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month{right:42px}.mec-calendar .mec-calendar-header h2{font-size:17px;margin-top:7px}}@media only screen and (max-width:767px){.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month,.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{top:28px;font-size:10px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{left:30px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month{right:30px}.mec-calendar .mec-calendar-header h2{font-size:15px}}@media only screen and (max-width:479px){.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month,.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{top:16px;font-size:0;padding:4px 0;text-align:center;min-width:33px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{left:10px}.mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month{right:10px}.mec-box-calendar.mec-calendar .mec-calendar-header h2{font-size:12px;margin-top:15px}.mec-box-calendar.mec-calendar .mec-event-image{margin-right:12px}}.mec-calendar.mec-event-calendar-classic,.mec-calendar.mec-event-calendar-classic .mec-calendar-side{border:none;padding:0;width:100%;height:100%;box-shadow:none}.mec-calendar.mec-event-calendar-classic .mec-calendar-side{display:block}.mec-calendar.mec-event-calendar-classic .mec-calendar-header,.mec-calendar.mec-event-calendar-classic dl{width:100%}.mec-calendar.mec-event-calendar-classic dl dt{width:15%;height:136px;line-height:1.2;text-align:left;padding:5px 7px;position:relative}.mec-calendar.mec-event-calendar-classic .mec-calendar-table-head dt{height:30px!important}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-side .mec-next-month,.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-side .mec-previous-month{top:0}.mec-calendar.mec-event-calendar-classic .mec-has-event:after{bottom:auto;top:24px;left:7px;margin:0}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-side .mec-previous-month{left:0}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-side .mec-next-month{right:0}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec{text-align:left;background:#fafafa;border:1px solid #eaeaea;border-top:none;padding:10px 20px}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec{display:none}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-event-article:hover{background-color:#fcfcfc}.mec-calendar.mec-event-calendar-classic .mec-selected-day,.mec-calendar.mec-event-calendar-classic dt.mec-selected-day:hover{color:#40d9f1;font-weight:700;background:#fafafa;border-bottom:none}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-table-side-day,.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-table-side-title{display:inline-block;margin:0;margin-bottom:15px;font-weight:700}.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-table-side-day{margin-left:4px}.mec-calendar.mec-event-calendar-classic .mec-calendar-row dt.mec-has-event a{color:#4d4d4d}.mec-calendar.mec-event-calendar-classic .mec-calendar-row dt.mec-has-event:not(.mec-selected-day):hover a{color:#fff}@media only screen and (max-width:1200px){.mec-calendar.mec-event-calendar-classic dl dt{height:100px}}@media only screen and (max-width:767px){.mec-calendar.mec-event-calendar-classic dl dt{height:40px}}@media only screen and (max-width:479px){.mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec{padding:10px}.mec-box-calendar.mec-calendar.mec-event-calendar-classic .mec-calendar-header h2{font-size:13px;margin-top:8px}}.mec-calendar .mec-event-article.mec-single-event-novel{padding:4px 8px;min-height:25px;margin:0 -4px;border-radius:0}.mec-calendar .mec-event-article.mec-single-event-novel h4{margin:0;font-size:10px;line-height:18px}.mec-calendar.mec-event-container-novel dl dt{padding:3px}.mec-calendar.mec-event-calendar-classic .mec-calendar-novel-selected-day{display:inline-block;padding:4px;margin-left:1px}.mec-calendar.mec-event-calendar-classic .mec-selected-day .mec-calendar-novel-selected-day{color:#fff}.mec-calendar.mec-event-calendar-classic.mec-event-container-novel .mec-selected-day,.mec-calendar.mec-event-calendar-classic.mec-event-container-novel dt.mec-selected-day:hover{border-bottom:1px solid #eaeaea}.mec-calendar.mec-event-calendar-classic.mec-event-container-novel .mec-calendar-side .mec-calendar-table{min-height:auto}.mec-single-event-novel.light h4{color:#000!important}.mec-single-event-novel.dark h4{color:#fff!important}@media only screen and (max-width:768px){.mec-calendar .mec-event-article.mec-single-event-novel{padding:0;min-height:5px}.mec-calendar .mec-event-article.mec-single-event-novel h4{display:block;font-size:9px}}.mec-event-container-simple .event-single-content-simple{display:none}.mec-event-calendar-classic.mec-event-container-simple .mec-calendar-side .mec-calendar-table{min-height:unset}.mec-event-container-simple .mec-monthly-tooltip h4{font-size:13px;font-weight:500;margin:0;color:#444}.mec-event-container-simple .mec-monthly-tooltip h4:hover{text-decoration:underline;color:#111}.mec-event-container-simple .mec-monthly-tooltip.event-single-link-simple{border-bottom:1px dashed #e3e3e3;padding:10px 2px;display:block}.mec-calendar.mec-event-container-simple dl dt.mec-calendar-day{font-size:30px;color:#000}.mec-calendar.mec-event-container-simple .mec-calendar-row dt:hover{background:unset}.mec-calendar.mec-event-container-simple .mec-calendar-row dt,.mec-calendar.mec-event-container-simple .mec-calendar-row dt:last-child,.mec-calendar.mec-event-container-simple .mec-calendar-table-head dt,.mec-calendar.mec-event-container-simple .mec-calendar-table-head dt:last-child{border-width:2px}.mec-calendar.mec-event-container-simple dl dt.mec-selected-day,.mec-calendar.mec-event-container-simple dl dt.mec-selected-day:hover{border-bottom:2px solid #40d9f1;background:unset}.mec-calendar.mec-event-container-simple .mec-calendar-table-head dt{line-height:36px}@media (max-width:768px){.mec-calendar.mec-event-container-simple{overflow-x:scroll}.mec-calendar.mec-event-container-simple .mec-calendar-side{min-width:700px}.mec-event-container-simple .mec-monthly-tooltip h4{font-size:12px}}.mec-wrap.colorskin-custom .mec-calendar.mec-event-container-simple .mec-selected-day:hover{background:#f4f4f4}.mec-event-container-simple .mec-calendar-day .mec-monthly-tooltip.event-single-link-simple:last-of-type{border:none}.mec-tooltip-event-title{font-size:16px;font-weight:700;color:#000;margin-bottom:2px}.mec-tooltip-event-time{font-size:12px;color:#888;margin-bottom:8px;margin-top:5px}.tooltipster-sidetip.tooltipster-shadow .tooltipster-content{padding:17px}.mec-tooltip-event-content{clear:both}.mec-tooltip-event-featured{float:left;margin-right:13px;margin-bottom:1px}.mec-tooltip-event-featured img{max-width:120px}.mec-tooltip-event-desc{font-size:14px;color:#444;line-height:18px}.mec-tooltip-event-desc p{font-size:13px;line-height:1.4;margin-bottom:10px}.tooltipster-sidetip.tooltipster-shadow .tooltipster-box{border-radius:3px!important;border:1px solid #e2e3e4!important;background:#fff!important;box-shadow:0 -1px 30px -2px rgba(0,0,0,.15)!important}.tooltipster-sidetip .tooltipster-arrow{overflow:visible!important}.tooltipster-sidetip.tooltipster-shadow .tooltipster-arrow-border{border-width:12px!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-right .tooltipster-arrow-border{border-right-color:#e2e3e4!important}.tooltipster-sidetip .tooltipster-arrow-border{left:-12px!important;z-index:9999999999!important}.tooltipster-sidetip.tooltipster-shadow .tooltipster-arrow-background{display:block!important}.tooltipster-sidetip .tooltipster-arrow-background{border-width:11px!important;z-index:99999999999!important}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background{left:-9px!important;top:1px!important;border-right-color:#fff!important}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{border-top-color:#fff!important;left:0!important;top:-1px!important}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border{left:-1px!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-top .tooltipster-arrow-border{border-top-color:#e2e3e4!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-bottom .tooltipster-arrow-border{left:-1px!important;top:-11px!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#e2e3e4!important}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background{top:-9px!important;border-bottom-color:#fff!important}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background{border-left-color:#fff!important;left:-2px!important;top:0!important}.tooltipster-sidetip.tooltipster-shadow.tooltipster-left .tooltipster-arrow-border{border-left-color:#e2e3e4!important;left:-1px!important;top:-1px!important}@media (max-width:780px){.mec-event-container-simple .mec-monthly-tooltip.event-single-link-simple h4{word-break:break-all;font-size:13px}}@media (max-width:320px){.mec-event-container-simple .mec-monthly-tooltip.event-single-link-simple h4{font-size:10px}}.mec-calendar.mec-calendar-daily .mec-calendar-day-events .mec-event-article{padding-left:15px;padding-right:15px}.mec-calendar.mec-calendar-daily .mec-calendar-a-month{text-align:center;background-color:#fff;border-bottom:2px solid #f4f4f4;position:relative}.mec-calendar.mec-calendar-daily .mec-calendar-a-month h4{color:#444;font-size:18px;line-height:1.2;padding:15px 0 11px;margin:0;font-weight:700;letter-spacing:1px;text-transform:uppercase;border-bottom:1px solid #e6e6e6}.mec-calendar.mec-calendar-daily .mec-calendar-d-top{text-align:center;padding:10px 0;position:relative;background-color:#fafafa}.mec-calendar.mec-calendar-daily .mec-next-month,.mec-calendar.mec-calendar-daily .mec-previous-month{position:absolute;top:50%;left:50%;margin-top:-25px;min-width:50px;height:50px;line-height:50px;text-align:center;background:#fff;border:1px solid #e2e2e2;border-radius:50px;box-shadow:0 2px 0 0 rgba(0,0,0,.015);transition:all .33s ease;cursor:pointer}.mec-calendar.mec-calendar-daily .mec-next-month i,.mec-calendar.mec-calendar-daily .mec-previous-month i{font-size:14px;cursor:pointer}.mec-calendar.mec-calendar-daily .mec-next-month:hover,.mec-calendar.mec-calendar-daily .mec-previous-month:hover{border-color:#d0d0d0;color:#444;box-shadow:0 2px 5px 0 rgba(0,0,0,.075)}.mec-calendar.mec-calendar-daily .mec-previous-month{margin-left:-150px}.mec-calendar.mec-calendar-daily .mec-next-month{margin-left:100px}.mec-calendar.mec-calendar-daily .mec-calendar-a-month .mec-next-month,.mec-calendar.mec-calendar-daily .mec-calendar-a-month .mec-previous-month{min-height:28px;height:28px;line-height:28px;width:28px;margin-top:-14px;border-radius:3px}.mec-calendar.mec-calendar-daily .mec-calendar-d-top h2,.mec-calendar.mec-calendar-daily .mec-calendar-d-top h3{margin-top:9px;color:#b9b9b9;font-family:Roboto,sans-serif;font-size:30px;font-weight:100;text-transform:uppercase;margin-bottom:12px;line-height:1}.mec-calendar.mec-calendar-daily .mec-calendar-d-top h2{font-size:81px;color:#444;margin-bottom:10px;line-height:1.1}.mec-calendar.mec-calendar-daily .mec-calendar-d-table{overflow:hidden;background:#fff;min-height:60px;border-top:1px solid #e6e6e6;border-bottom:2px solid #f3f3f3;padding:0 50px;position:relative}@media only screen and (min-width:479px){.mec-calendar.mec-calendar-daily .mec-calendar-d-table{padding:0 55px}}.mec-calendar.mec-calendar-daily .mec-calendar-d-table dl{width:1310px;display:block}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl{display:none}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl.mec-weekly-view-week-active{display:block}.mec-calendar.mec-calendar-daily .mec-calendar-d-table a,.mec-calendar.mec-calendar-daily .mec-calendar-d-table dl dt{display:block;background:#fff;width:42px;height:60px;line-height:60px;text-align:center;float:left;border-right:1px solid #e6e6e6;border-bottom:1px solid #e6e6e6;border-radius:0}.mec-calendar.mec-calendar-daily .mec-calendar-d-table .mec-daily-view-day:hover,.mec-calendar.mec-calendar-daily .mec-calendar-d-table dl dt:hover{background:#fafafa;box-shadow:0 2px 5px 0 rgba(0,0,0,.065) inset;cursor:pointer}.mec-calendar.mec-calendar-daily .mec-calendar-d-table .mec-daily-view-day{cursor:default;background:#fff;color:#c1c1c1;line-height:59px;text-align:center;border-right:1px solid #e6e6e6;border-bottom:1px solid #e6e6e6}.mec-calendar.mec-calendar-daily .mec-calendar-d-table .mec-daily-view-day.mec-has-event{cursor:pointer;font-weight:700;color:#4a4a4a}.mec-calendar.mec-calendar-daily .mec-calendar-d-table .mec-daily-view-day.mec-daily-view-day-active,.mec-calendar.mec-calendar-daily .mec-calendar-d-table dl dt.mec-table-d-current{font-size:18px;font-weight:700;background:#fafafa;color:#40d9f1}.mec-calendar.mec-calendar-daily .mec-calendar-d-table a.mec-table-d-next,.mec-calendar.mec-calendar-daily .mec-calendar-d-table a.mec-table-d-prev{float:none;font-size:14px;width:55px;position:absolute;top:0;left:0;cursor:pointer}.mec-calendar.mec-calendar-daily .mec-calendar-d-table a.mec-table-d-next{left:auto;right:0;border-left:1px solid #e6e6e6;border-right:none}.mec-calendar.mec-calendar-daily .mec-today-container .mec-today-count{font-size:12px;color:#888;text-align:center}@media only screen and (max-width:479px){.mec-calendar.mec-calendar-daily .mec-previous-month{margin-left:-130px}.mec-calendar.mec-calendar-daily .mec-next-month{margin-left:80px}.mec-calendar.mec-calendar-daily .mec-calendar-a-month h4{font-size:14px;letter-spacing:0}}.widget .mec-calendar.mec-calendar-daily .mec-calendar-a-month h4{font-size:14px;letter-spacing:0}.widget .mec-calendar.mec-calendar-daily .mec-previous-month{margin-left:-130px}.widget .mec-calendar.mec-calendar-daily .mec-next-month{margin-left:80px}.mec-util-hidden{display:none}.mec-daily-view-date-events,.mec-weekly-view-date-events{list-style:none;margin:0}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table{padding:0}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl{width:calc(100% - 1px)}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt{width:14.286%;height:70px;line-height:normal;cursor:default}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt:hover{background:#fff;cursor:default}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt:last-child{border-right:none}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt span{font-size:12px;font-weight:700;text-transform:uppercase;display:block;margin:15px 0 6px}.mec-calendar.mec-calendar-weekly .mec-calendar-d-table a.mec-table-d-next,.mec-calendar.mec-calendar-weekly .mec-calendar-d-table a.mec-table-d-prev{display:none}ul.mec-weekly-view-dates-events,ul.mec-weekly-view-dates-events li{padding:0;margin:0;line-height:initial}.mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date{width:64px;height:64px;margin-right:10px;font-size:11px;text-transform:uppercase;float:left;text-align:center;padding-top:2px}.mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date span{font-size:40px;line-height:30px;font-weight:700;display:block;margin-bottom:6px;letter-spacing:1px}.mec-calendar.mec-calendar-weekly .mec-calendar-a-month .mec-previous-month{margin-left:0;left:12px}.mec-calendar.mec-calendar-weekly .mec-calendar-a-month .mec-next-month{margin-left:0;left:auto;right:12px}@media only screen and (max-width:479px){.mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt span{font-size:9px;letter-spacing:0}.mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date{width:100%;height:36px;margin-bottom:12px;line-height:1;font-size:10px;margin-right:5px;text-align:left}.mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date span{font-size:18px;margin-bottom:5px}}.widget .mec-calendar.mec-calendar-weekly .mec-calendar-d-table dl dt span{font-size:9px;letter-spacing:0}.widget .mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date{width:100%;height:36px;margin-bottom:12px;line-height:1;font-size:10px;margin-right:5px;text-align:left}.widget .mec-calendar.mec-calendar-weekly .mec-event-list-weekly-date span{font-size:18px;margin-bottom:5px}.mec-week-events-container .mec-weekly-view-dates-events li.mec-no-event-found{list-style:none!important}li.mec-no-event-found .mec-event-title{text-align:center}.mec-widget .mec-calendar{max-width:100%}.mec-widget .mec-calendar dl dt,.mec-wrap.mec-sm959.mec-widget .mec-calendar.mec-event-calendar-classic dl dt{height:40px}.mec-widget .mec-calendar .mec-calendar-events-sec{padding:10px}.mec-widget .mec-calendar .mec-calendar-header h2{font-size:13px;margin-top:8px}.mec-widget .mec-calendar .mec-event-list-classic .mec-event-image{margin-right:12px}.mec-widget .mec-calendar .mec-has-event:after{width:4px;height:4px}.mec-widget .mec-calendar.mec-event-calendar-classic .mec-calendar-events-sec .mec-table-side-title{font-size:14px}.mec-widget .mec-calendar .mec-event-article .mec-event-image{margin-right:11px}.mec-widget .mec-box-calendar.mec-calendar .mec-calendar-header{margin-bottom:20px}.mec-widget .mec-box-calendar.mec-calendar .mec-calendar-side .mec-next-month,.mec-widget .mec-box-calendar.mec-calendar .mec-calendar-side .mec-previous-month{font-size:0;padding:4px 0;text-align:center;min-width:33px}.mec-widget .mec-event-calendar-classic .mec-calendar-side .mec-calendar-table{min-height:200px}.mec-widget .mec-event-list-classic{margin-bottom:8px;padding:8px 0}.mec-widget .mec-event-list-classic .mec-event-article{margin-bottom:0;padding:10px 0;position:relative;min-height:86px;padding-left:80px}.mec-widget .mec-event-list-classic .mec-event-date{font-size:10px;line-height:14px;text-transform:uppercase}.mec-widget .mec-event-list-classic .mec-event-title{font-size:13px}.mec-widget .mec-event-list-classic .mec-event-detail{font-size:11px}.mec-widget .mec-event-list-classic .mec-event-image{width:68px;position:absolute;left:0}.mec-event-list-classic .mec-event-image img{width:100%}.mec-widget .mec-event-list-classic .mec-event-detail{overflow:visible}.event-color{width:14px;display:inline-block;height:14px;margin-left:5px;border-radius:50%}.mec-map-lightbox-wp{width:580px;padding:15px 15px 0;background-color:#fff}.mec-map-view-event-detail.mec-event-detail{width:580px;background-color:#e9e9e9;padding:8px 15px}.mec-map-lightbox-wp.mec-event-list-classic .mec-event-article{padding:0 0 15px;margin:0}.mec-map-lightbox-wp.mec-event-list-classic .mec-event-image{width:70px;margin-right:15px}.mec-marker-infowindow-wp{padding:10px}.mec-marker-infowindow-wp .mec-marker-infowindow-count{width:60px;height:60px;display:block;text-align:center;line-height:60px;border:1px solid #40d9f1;border-radius:50%;font-size:32px;color:#40d9f1;float:left;margin-right:11px}.mec-marker-infowindow-wp .mec-marker-infowindow-content{overflow:hidden;padding-top:6px}.mec-marker-infowindow-wp .mec-marker-infowindow-content span{display:block;color:#222}.mec-marker-infowindow-wp .mec-marker-infowindow-content span:first-child{font-size:15px;font-weight:700}.mec-marker-wrap{display:inline-block;width:35px;height:35px;margin:15px 0 0 4px;border-radius:50% 50% 50% 0;background:#00cae9;animation-name:mec-map-bounce;animation-fill-mode:both;animation-duration:1s;border:3px solid #fff;cursor:pointer}.mec-marker-wrap .mec-marker{margin-top:5px;display:block;-webkit-transform:rotate(45deg);transform:rotate(45deg);text-align:center;color:#fff;font-size:17px}.mec-marker-wrap .mec-marker-pulse-wrap{-webkit-transform:rotate(45deg);transform:rotate(45deg);display:inline-block;margin-left:-11px;margin-top:0}.mec-marker-wrap .mec-marker-pulse{display:inline-block;background:#c5c5c5;border-radius:50%;height:14px;width:14px;-webkit-transform:rotateX(55deg);transform:rotateX(55deg);z-index:-2}.mec-marker-wrap .mec-marker-pulse:after{content:"";border-radius:50%;height:40px;width:40px;position:absolute;margin:-13px 0 0 -13px;animation:pulsate 1s ease-out;animation-iteration-count:infinite;opacity:0;box-shadow:0 0 1px 2px #00cae9;animation-delay:1.1s}@keyframes pulsate{0%{transform:scale(.1,.1);opacity:0}50%{opacity:1}100%{transform:scale(1.2,1.2);opacity:0}}@keyframes mec-map-bounce{0%{opacity:0;transform:translateY(-2000px) rotate(-45deg)}60%{opacity:1;transform:translateY(30px) rotate(-45deg)}80%{transform:translateY(-10px) rotate(-45deg)}100%{transform:translateY(0) rotate(-45deg)}}.mec-skin-grid-container .mec-skin-map-container,.mec-skin-list-container .mec-skin-map-container{margin-bottom:20px}.mec-single-event{margin-top:10px}.mec-single-event .mec-events-meta-group-countdown{color:#c9c9c9;text-align:center;margin-bottom:30px;padding:20px 30px;background:#fff;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-events-meta-group-countdown .countdown-w{text-align:center;font-size:36px;margin:0 auto;padding:40px 0 0;position:relative;display:table;table-layout:fixed}.mec-events-meta-group-countdown .countdown-w .icon-w{font-size:24px}.mec-events-meta-group-countdown .countdown-w .label-w{font-size:15px;font-weight:300;letter-spacing:1px;text-transform:uppercase;position:relative}.mec-events-meta-group-countdown .countdown-w .block-w{display:table-cell;margin:0 20px 10px;position:relative;height:70px;width:190px;font-size:72px;transition:all .3s ease-in-out;line-height:1.2}.mec-events-meta-group-countdown .countdown-w .block-w.done-w{border:0 none}.mec-events-meta-group-countdown .countdown-w span{padding:24px 0 20px}.mec-events-meta-group-countdown .countdown-w .div-d{display:none}.mec-events-meta-group-countdown .countdown-w .countdown-message{display:none}.mec-events-meta-group-countdown .countdown-w .block-w i{display:none}#countdown{list-style:none;margin-bottom:0;margin-top:0;margin-left:0;padding-left:0}.mec-events-meta-group-countdown .mec-end-counts h3{display:inherit;text-align:center;font-size:16px;right:50%}.mec-countdown-details .countdown-w .clockdiv li p{margin-top:23px}@media (min-width:481px) and (max-width:768px){.mec-events-meta-group-countdown .countdown-w{padding:0}.mec-events-meta-group-countdown .countdown-w .label-w{font-size:12px;letter-spacing:0}.mec-events-meta-group-countdown .countdown-w span{font-size:34px}}@media (min-width:320px) and (max-width:480px){.mec-events-meta-group-countdown .countdown-w .label-w{font-size:10px}.mec-events-meta-group-countdown .countdown-w span{font-size:28px}.mec-countdown-details .countdown-w .clockdiv li p{margin-top:16px}}@media (max-width:320px){.mec-events-meta-group-countdown .countdown-w .label-w{font-size:9px;letter-spacing:0}.mec-events-meta-group-countdown .countdown-w span{font-size:22px}}.info-msg,.mec-error,.mec-success,.warning-msg{margin:10px 0;padding:10px;border-radius:3px 3px 3px 3px;font-size:13px}.info-msg{color:#059;background-color:#bef}.mec-success{color:#270;background-color:#dff2bf}.warning-msg{color:#9f6000;background-color:#feefb3}.mec-error{color:#d8000c;background-color:#ffbaba}.mec-fes-list ul{list-style:none}.mec-fes-form-cntt .dashicons-editor-help{display:none}.mec-fes-list ul li *{text-decoration:none!important}.mec-fes-list ul li{border-bottom:1px solid #eee;padding:14px 0;line-height:normal}.mec-fes-list ul li a{box-shadow:none;color:#181818}.mec-fes-list ul li a:hover{color:#40d9f1}.mec-fes-list ul li .mec-event-title{font-weight:600;font-size:15px}.mec-fes-list .mec-event-status{color:#fff!important;border-color:transparent!important}.mec-fes-form .mec-book-confirmed,.mec-fes-list .mec-book-confirmed{background:#50d477!important}.mec-fes-form .mec-book-pending,.mec-fes-list .mec-book-pending{background:#fcbe69!important}.mec-fes-form .mec-book-rejected,.mec-fes-list .mec-book-rejected{background:#fe686a!important}.mec-fes-form .mec-book-other,.mec-fes-list .mec-book-other{background:#40d9f1!important}.mec-fes-list ul li .mec-fes-event-remove,.mec-fes-list ul li .mec-fes-event-view{font-size:11px;padding:4px 8px;border:1px solid #e7e7e7;background:#f7f7f7;float:right;margin-left:5px}.mec-fes-list ul li .mec-fes-event-remove:hover{cursor:pointer;background:#f0b7b8;border-color:#cc4d4f}.mec-fes-list-top-actions a{font-size:11px;letter-spacing:2px;text-transform:uppercase;padding:8px 14px;border:1px solid #e3e3e3;background:#f5f5f5}.mec-fes-form-top-actions a,.mec-fes-list-top-actions a{position:relative;border:none;border-radius:0;color:#fff!important;display:inline-block;font-size:12px;letter-spacing:2px;line-height:1;text-transform:uppercase;font-weight:600;text-decoration:none;cursor:pointer;margin-bottom:21px;margin-right:10px;line-height:1;padding:17px 21px;background:#39c36e;-webkit-transition:all .21s ease;-moz-transition:all .21s ease;transition:all .21s ease}.mec-fes-form-top-actions a:hover,.mec-fes-list-top-actions a:hover{background:#222;color:#fff}.mec-fes-form .mec-form-row,.mec-fes-list .mec-form-row{margin-bottom:20px;clear:both}.mec-fes-form label{padding-right:10px;font-size:13px;display:block}.mec-fes-form .post-status{float:right!important;margin:0 5px;color:#fff;padding:0 10px;border-radius:12px;font-style:italic;font-size:18px}.mec-fes-form input[type=email],.mec-fes-form input[type=number],.mec-fes-form input[type=password],.mec-fes-form input[type=tel],.mec-fes-form input[type=text],.mec-fes-form select,.mec-fes-form textarea{border-radius:0;min-width:inherit;width:auto;display:inline;background:#fcfcfc;min-height:30px;font-size:13px;border:1px solid #e0e0e0;padding:10px;margin-bottom:20px;box-shadow:inset 0 2px 4px rgba(0,0,0,.051);clear:both}#mec_more_info_target{width:100%}@media only screen and (min-width:961px){.mec-fes-form input[type=email],.mec-fes-form input[type=password],.mec-fes-form input[type=text],.mec-fes-form textarea{width:100%;display:inline-block}}@media only screen and (max-width:768px){.mec-fes-form input[type=email],.mec-fes-form input[type=password],.mec-fes-form input[type=text],.mec-fes-form textarea{width:100%}}.mec-fes-form input[type=text]#mec_fes_title{width:100%;height:auto;color:#000;font-size:36px;font-family:Montserrat,Helvetica,Arial,sans-serif;background:0 0!important;font-weight:400}.mec-fes-form input[type=checkbox],.mec-fes-form input[type=radio]{display:inline!important;float:left;margin:5px 5px 0 0}.mec-fes-form input[type=email]:focus,.mec-fes-form input[type=number]:focus,.mec-fes-form input[type=password]:focus,.mec-fes-form input[type=tel]:focus,.mec-fes-form input[type=text]:focus,.mec-fes-form select:focus,.mec-fes-form textarea:focus{border:1px solid #aaa;color:#444;background:#fff;-moz-box-shadow:0 0 3px rgba(0,0,0,.2);-webkit-box-shadow:0 0 3px rgba(0,0,0,.2);box-shadow:0 0 3px rgba(0,0,0,.2);outline:0}.mec-form-row .mec-color{cursor:pointer}.mec-form-row.mec-available-color-row span{margin:10px;width:14px;height:14px;display:inline-block;margin-right:6px;border-radius:20px 20px 20px 20px;vertical-align:middle}.mec-form-row.mec-available-color-row span:first-of-type{margin-left:0}.mec-fes-form.mec-fes-form .mec-tooltip{display:inline}.mec-fes-form-cntt .dashicons-editor-help{display:block}.mec-fes-form .mec-tooltip:hover:after,.mec-fes-form .mec-tooltip:hover:before{display:none}.mec-fes-form.mec-fes-form .mec-tooltip{display:inline-flex;bottom:7px}.mec-fes-form .mec-tooltip .box{min-width:300px;max-width:600px;display:inline-block;left:26px;top:50%;transform:translateY(-50%);padding:0;margin-top:8px;background-color:#535a61;color:#fff;font-weight:300;font-size:14px;letter-spacing:.5px;line-height:1.3;position:absolute;z-index:9999999;box-sizing:border-box;border-radius:6px;box-shadow:0 4px 45px -8px #444b50;visibility:hidden;opacity:0;transition:opacity .23s}#webnus-dashboard .mec-fes-form .mec-tooltip .box p,.mec-fes-form .mec-tooltip .box p{color:#fff;font-size:14px;line-height:1.3;margin:0}.mec-fes-form .mec-tooltip:hover .box{visibility:visible;opacity:1}.mec-fes-form .mec-tooltip:hover .box{padding:20px;border-radius:8px}.mec-fes-form .mec-tooltip .box h5{color:#fff;font-size:17px;font-weight:600;margin:-30px -20px;padding:20px 0;text-align:center;margin-bottom:10px;background:#3a3f44;border-bottom:1px solid #32363a;border-radius:6px 6px 0 0;z-index:9999}#webnus-dashboard .mec-fes-form .mec-tooltip .box p a,.mec-fes-form .mec-tooltip .box p a{color:#40d9f1;margin-top:10px;margin-left:0;font-weight:400;position:relative;text-decoration:none;display:block;width:max-content}.mec-fes-form .mec-tooltip .box a:hover{color:#f90}.mec-fes-form .mec-tooltip .box:after{display:block;position:absolute!important;top:100%!important;right:50%!important;margin-top:-6px!important;margin-right:-6px!important;width:12px!important;height:24px!important;overflow:hidden!important;transform:rotate(-90deg)!important}.mec-fes-form .mec-tooltip .box:before{display:block;content:''!important;position:absolute!important;width:12px;height:12px;left:-10px!important;top:50%!important;transform:translate(50%,-50%) rotate(-45deg)!important;background-color:#535a61!important;box-shadow:0 8px 9px -4px #535a61!important;z-index:0!important}.mec-fes-form .mec-tooltip .box.top{left:50%;top:0;transform:translate(-50%,-100%);margin-top:0;margin-left:-10px}.mec-fes-form .mec-tooltip .box.top:after{top:50%!important;right:100%!important}.mec-fes-form .mec-tooltip .box.top:before{left:50%!important;top:100%!important}.mec-fes-form .mec-tooltip .box.bottom{left:50%;top:auto;bottom:0;transform:translate(-50%,100%);margin-bottom:-20px;margin-left:-10px}.mec-fes-form .mec-tooltip .box.bottom:after{top:0!important;right:50%!important;background-color:#3a3f44!important}.mec-fes-form .mec-tooltip .box.bottom:before{left:50%!important;top:-7px!important;transform:translateX(-50%);background-color:#3a3f44!important}.mec-fes-form .mec-tooltip .box.left{left:auto;right:26px;top:50%;transform:translateY(-50%)}.mec-fes-form .mec-tooltip .box.left:before{right:0!important;left:auto!important;top:50%!important}.mec-fes-form .mec-tooltip{display:inline-block;position:relative;margin-right:10px;cursor:help;bottom:5px;left:3px}.mec-fes-form .mec-tooltip:last-child{margin-right:0}.mec-fes-form .mec-tooltip:hover:after{background:#313130;border-radius:5px;bottom:24px;color:#fff;content:attr(title);left:-75px;padding:10px;position:absolute;z-index:98;width:240px}.mec-fes-form .mec-tooltip:hover:before{border:solid;border-color:#313130 transparent;border-width:6px 6px 0;bottom:18px;content:"";left:30%;position:absolute;z-index:99}.mec-fes-form .mec-tooltip .dashicons-before:before{font-size:24px;color:#008aff;line-height:37px}.mec-fes-form .mec-tooltip a:focus{box-shadow:none}.mec-form-row .bootstrap_unvalid{display:block;border:2px solid red;position:relative;display:inline-block;border-bottom:1px dotted #000}.mec-fes-form .mec-tooltiptext{visibility:hidden;width:120px;background-color:red;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1}.mec-fes-form .mec-tooltip .content p a{display:none}@media only screen and (min-width:961px){.mec-fes-form .mec-fes-form-cntt,.mec-fes-form .mec-fes-form-sdbr{width:68%;float:left;padding-right:20px}.mec-fes-form .mec-fes-form-sdbr{width:32%;padding-right:0;padding-left:20px}.mec-fes-submit-mobile{display:none}}.mec-fes-form .mec-meta-box-fields{padding:20px;border:1px solid #e6e6e6;margin-bottom:20px;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-fes-form .mec-meta-box-fields h4{margin:-20px;font-size:15px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:10px 20px;background:#f5f5f5;margin-bottom:20px}.mec-fes-sub-button{width:100%}.mec-available-color-row span.color-selected{background-color:#fdd700;border:3px solid #fff;box-sizing:content-box;box-shadow:0 0 0 2px #437df9}.mec-fes-loading:before{content:url(../img/ajax-loader.gif);background:0 0;border-style:none;display:block;margin-left:47%}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row input[type=text]{width:23%;margin-right:1.4%}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row{border-bottom:1px solid #e8e8e8;padding-bottom:15px}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row:last-of-type{border:none}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row input[type=text].mec-col-1{width:10%}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row input[type=text].mec-col-6{width:39%}.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row button{margin-right:0;padding:9px 26px}@media only screen and (max-width:768px){.mec-fes-form #mec_meta_box_hourly_schedule_days .mec-form-row input[type=text]{width:100%!important}}.mec-wrap .mec-totalcal-box{position:relative;border:1px solid #efefef;padding:20px 5px;margin:0 0 20px;background:#fafafa;overflow:hidden;box-shadow:0 3px 2px 0 rgba(0,0,0,.012);min-height:78px}.mec-wrap .mec-totalcal-box i{float:left;margin:0;width:36px;height:36px;background:#fff;border:1px solid #efefef;text-align:center;padding:10px 0;font-size:15px;color:#888}.mec-wrap .mec-totalcal-box .mec-totalcal-view span,.mec-wrap .mec-totalcal-box input,.mec-wrap .mec-totalcal-box select{width:auto;min-height:36px;height:36px;line-height:36px;background:#fff;font-size:13px;color:#777;border:1px solid #efefef;margin:0 0 0 -1px;float:left;padding:0 5px;font-family:Roboto,Helvetica,Arial,sans-serif}.mec-wrap .mec-totalcal-box input[type=submit]{cursor:pointer;padding:0 16px;text-transform:uppercase;font-size:11px;font-family:Montserrat,Helvetica,Arial,sans-serif;transition:all .21s ease}.mec-wrap .mec-totalcal-box input[type=submit]:hover{background:#222;color:#fff}.mec-wrap .mec-totalcal-box .mec-totalcal-view span{display:inline-block;text-transform:uppercase;font-family:Montserrat,Helvetica,Arial,sans-serif;font-size:11px;padding:0 12px;cursor:pointer}.mec-wrap .mec-totalcal-box .mec-totalcal-view span:hover{color:#40d9f1}.mec-wrap .mec-totalcal-box .mec-totalcal-view span.mec-totalcalview-selected{color:#fff;background:#40d9f1;border-color:#40d9f1}.mec-wrap .mec-totalcal-box .mec-totalcal-view{text-align:right;float:right}.mec-wrap .mec-totalcal-box input[type=search]{width:calc(100% - 36px)}@media only screen and (min-width:961px) and (max-width:1200px){.mec-wrap .mec-totalcal-box{padding:37px 5px}}@media only screen and (max-width:960px){.mec-wrap .mec-totalcal-box .col-md-3,.mec-wrap .mec-totalcal-box .col-md-4,.mec-wrap .mec-totalcal-box .col-md-5{width:100%;float:none;padding-bottom:20px;clear:both;overflow:hidden}}@media only screen and (min-width:768px) and (max-width:960px){.mec-wrap .mec-totalcal-box .col-md-4{position:relative;right:10px;top:20px;width:initial}.mec-wrap .mec-totalcal-box .col-md-5{padding-bottom:0}.mec-wrap .mec-totalcal-box{padding:37px 5px}}@media only screen and (max-width:767px){.mec-wrap .mec-totalcal-box .mec-totalcal-view{float:none}.mec-wrap .mec-totalcal-box .col-md-4{padding-bottom:0}}@media only screen and (max-width:479px){.mec-wrap .mec-totalcal-box .mec-totalcal-view span{padding:0 8px;font-size:10px}.mec-wrap .mec-totalcal-box input[type=submit]{padding:0 10px;font-size:10px}}@media only screen and (min-width:961px){.mec-wrap .mec-wrap.mec-sm959 .mec-totalcal-box .col-md-5,.mec-wrap.mec-sm959 .mec-totalcal-box .col-md-3{width:100%;float:none;padding-bottom:20px;clear:both;overflow:hidden}.mec-wrap.mec-sm959 .mec-totalcal-box .col-md-4{position:absolute;right:10px;top:20px;width:initial}.mec-wrap.mec-sm959 .mec-totalcal-box .col-md-5{padding-bottom:0;width:100%}}@media (min-width:961px) and (max-width:1200px){.mec-full-calendar-wrap .mec-totalcal-box{padding:20px 20px}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2{width:50%}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2,.mec-full-calendar-wrap .mec-totalcal-box .col-md-3,.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{padding-bottom:20px!important}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2 select{min-width:calc(100% - 36px)}.mec-full-calendar-wrap .mec-totalcal-box .col-md-3 select{min-width:calc(30% - 10px)}.mec-full-calendar-wrap .mec-totalcal-box .col-md-3:last-child select{min-width:calc(50% - 19px)}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view{margin-right:10px}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view span{font-size:10px;text-align:center}}@media (max-width:960px){.mec-full-calendar-wrap .mec-totalcal-box{padding:20px 20px}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2{width:50%}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2,.mec-full-calendar-wrap .mec-totalcal-box .col-md-3,.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{padding-bottom:10px!important}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2 select{min-width:calc(100% - 36px);margin-bottom:10px}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view{margin-right:10px}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view span{font-size:10px;text-align:center}.mec-full-calendar-wrap .mec-totalcal-box .col-md-2{width:100%}.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{position:absolute;top:20px}}@media (min-width:780px) and (max-width:960px){.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{position:absolute;top:20px}}@media(max-width:780px){.mec-full-calendar-wrap .mec-totalcal-box .col-md-3 select{width:calc(50% - 18px)!important}.mec-full-calendar-wrap .mec-totalcal-box .col-md-4{position:unset;padding-right:0}.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view span{min-width:20%;text-align:center;font-size:10px}.mec-wrap .mec-totalcal-box .mec-totalcal-view span{padding:0 7px;margin-top:20px}}@media(max-width:480px){.mec-full-calendar-wrap .mec-totalcal-box .mec-totalcal-view span{min-width:20%;text-align:center;font-size:10px}}.mec-search-form{padding:20px 10px}.mec-search-form .mec-dropdown-wrap{display:table;min-height:55px;width:100%}.mec-search-form .mec-date-search,.mec-search-form .mec-dropdown-search,.mec-search-form .mec-text-input-search{padding:0 10px;float:left;min-height:55px}.mec-search-form .mec-date-search,.mec-search-form .mec-text-input-search{width:50%;min-height:36px;display:block}.mec-full-calendar-wrap .mec-search-form .mec-date-search,.mec-full-calendar-wrap .mec-search-form .mec-text-input-search{width:100%}.mec-full-calendar-wrap .mec-search-form .col-md-3,.mec-full-calendar-wrap .mec-search-form .col-md-5,.mec-full-calendar-wrap .mec-search-form .col-md-6,.mec-full-calendar-wrap .mec-search-form .col-md-8{padding:0}.mec-widget .mec-search-form .mec-date-search,.mec-widget .mec-search-form .mec-text-input-search{width:100%}.mec-widget .mec-search-form .mec-text-input-search{margin-top:10px}.mec-search-form .mec-date-search{clear:left}.mec-search-form .mec-dropdown-wrap .mec-dropdown-search{display:table-cell;float:none}.mec-widget .mec-search-form .mec-dropdown-wrap .mec-dropdown-search{display:block}.mec-wrap .mec-search-form .mec-dropdown-wrap .mec-dropdown-search select{width:calc(100% - 36px)}.mec-wrap .mec-search-form .mec-date-search select{width:calc(100% - 106px)}.mec-wrap .mec-search-form .mec-date-search select:last-child{width:70px}@media only screen and (max-width:767px){.mec-search-form .mec-date-search,.mec-search-form .mec-dropdown-search,.mec-search-form .mec-text-input-search{width:100%;float:none}.mec-search-form .mec-date-search{min-height:55px}.mec-search-form .mec-dropdown-wrap .mec-dropdown-search{display:block;width:50%;float:left}}@media only screen and (max-width:960px){.mec-wrap .mec-search-form .mec-date-search select{width:calc(100% - 124px)}.mec-wrap .mec-search-form .mec-date-search select:last-child{width:70px}}@media only screen and (max-width:479px){.mec-search-form .mec-dropdown-wrap .mec-dropdown-search{display:block;width:100%;float:none}}.ui-datepicker{background-color:#fff;border:1px solid #66afe9;border-radius:4px;box-shadow:0 0 8px rgba(102,175,233,.6);display:none;margin-top:4px;padding:10px;width:240px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none;cursor:pointer}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2c6396;-webkit-transition:color .1s ease-in-out;-moz-transition:color .1s ease-in-out;-o-transition:color .1s ease-in-out;transition:color .1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{cursor:default;font-family:dashicons;-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;height:20px;line-height:1.4;margin-top:2px;width:20px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:center}.ui-datepicker .ui-datepicker-prev:before{content:"\f341"}.ui-datepicker .ui-datepicker-next:before{content:"\f345"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar td,.ui-datepicker .ui-datepicker-calendar th{text-align:center;padding:4px 0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color .1s ease-in-out,color .1s ease-in-out;-moz-transition:background-color .1s ease-in-out,color .1s ease-in-out;-o-transition:background-color .1s ease-in-out,color .1s ease-in-out;transition:background-color .1s ease-in-out,color .1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.event-carousel-type1-head .mec-event-image{position:relative;min-height:150px}.event-carousel-type1-head .mec-event-image img{width:100%}.mec-event-carousel-content .mec-event-carousel-title a{transition:all .2s ease}.event-carousel-type1-head .mec-event-date-carousel{position:absolute;top:25px;left:1px;font-size:41px;width:160px;color:#fff;font-weight:500;background-color:#40d9f1;padding-left:21px;height:97px;line-height:2.3;padding-right:85px}.event-carousel-type1-head .mec-event-date-carousel:after{content:"";position:absolute;display:inline-block;z-index:-1;bottom:-13px;left:5px;width:0;border-width:13px;border-style:solid;border-color:transparent transparent #40d9f1 transparent;transform:rotate(45deg)}.event-carousel-type1-head .mec-event-date-info{font-size:12px;font-weight:300;position:absolute;top:27px;left:75px}.event-carousel-type1-head .mec-event-date-info-year{font-size:12px;font-weight:300;position:absolute;top:45px;left:75px}.mec-event-carousel-content{border:1px solid #e8e8e8;border-top:none;margin-top:-5px;padding:34px 9px 11px 37px}.mec-event-carousel-content .mec-event-carousel-title a{font-size:23px;font-weight:500;color:#000;letter-spacing:-1px}.mec-event-carousel-content p{font-size:14px;color:#7a7272;font-weight:300}.mec-owl-crousel-skin-type1 .owl-item .mec-event-article{padding:0 19px}.mec-event-carousel-type1 .owl-page.active span{background-color:#00aeef;height:14px;width:14px}.mec-event-carousel-type1 .mec-event-carousel-content{margin-bottom:15px;box-shadow:0 1px 2px rgba(0,0,0,.04);transition:all .27s ease}.mec-event-carousel-type1 .mec-event-carousel-content:hover{box-shadow:0 0 35px rgba(0,0,0,.07)}@media only screen and (min-width:768px) and (max-width:1000px),(min-width:270px) and (max-width:448px){.event-carousel-type1-head .mec-event-date-carousel{font-size:25px;line-height:2.5;padding-right:70px;height:64px;width:120px}.event-carousel-type1-head .mec-event-date-carousel:after{left:7px}.event-carousel-type1-head .mec-event-date-info{font-size:10px;top:13px;left:55px}.event-carousel-type1-head .mec-event-date-info-year{font-size:10px;top:25px;left:55px}.event-carousel-type1-head .mec-event-date-carousel:after{top:48px}}.event-carousel-type2-head{background:#fff;border:1px solid #e6e6e6}.event-carousel-type2-head .mec-event-carousel-content-type2{margin-top:15px;min-height:182px}.event-carousel-type2-head .mec-event-carousel-content-type2 .mec-event-date-info{font-size:15px;color:#9a9a9a;font-weight:300}.event-carousel-type2-head .mec-event-carousel-content-type2 .mec-event-carousel-title{font-size:26px;font-weight:700;color:#1c1d21;margin-top:15px;letter-spacing:-1px}.mec-event-carousel-content-type2 .mec-event-carousel-title a{color:inherit}.mec-event-carousel-type2 .event-carousel-type2-head .mec-event-carousel-content-type2 p{font-size:16px;font-weight:300;color:#444}.event-carousel-type2-head .mec-event-footer-carousel-type2{margin-top:33px;position:relative}.mec-event-carousel-type2 .mec-event-footer-carousel-type2 .mec-event-sharing-wrap{left:0}.event-carousel-type2-head .mec-event-footer-carousel-type2 .mec-event-sharing-wrap>li{border:none;-webkit-transition:all .25s ease;transition:all .25s ease}.event-carousel-type2-head .mec-event-footer-carousel-type2 .mec-booking-button{border:1px solid #e4e4e4;float:right;padding:7px 23px 7px;font-size:12px;text-transform:uppercase;color:#707070;font-weight:500;-webkit-transition:all .25s ease;transition:all .25s ease}.event-carousel-type2-head .mec-event-footer-carousel-type2 .mec-booking-button:hover{color:#fff}.mec-event-article .event-carousel-type2-head{padding:10%;margin-right:-1px}.mec-event-carousel-type2 .mec-owl-carousel .owl-wrapper-outer{border-right:1px solid #e6e6e6}.mec-wrap .mec-event-carousel-type2 .owl-next,.mec-wrap .mec-event-carousel-type2 .owl-prev,.mec-wrap .mec-event-carousel-type3 .owl-next,.mec-wrap .mec-event-carousel-type3 .owl-prev,.mec-wrap .mec-event-carousel-type4 .owl-next,.mec-wrap .mec-event-carousel-type4 .owl-prev{transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:47%;background-color:transparent!important}.mec-event-carousel-type2 .owl-next{right:-60px}.mec-event-carousel-type2 .owl-prev{left:-60px}.mec-event-carousel-type2 .owl-next i,.mec-event-carousel-type2 .owl-prev i,.mec-event-carousel-type3 .owl-next i,.mec-event-carousel-type3 .owl-prev i,.mec-event-carousel-type4 .owl-next i,.mec-event-carousel-type4 .owl-prev i{font-size:40px;color:#282828}.mec-event-carousel-type2 .owl-next i:hover,.mec-event-carousel-type2 .owl-prev i:hover,.mec-event-carousel-type3 .owl-next i:hover,.mec-event-carousel-type3 .owl-prev i:hover{color:#000;cursor:pointer}.mec-event-footer-carousel-type2 .mec-event-sharing-wrap .mec-event-sharing{top:auto;bottom:60px}.mec-event-footer-carousel-type2 .mec-event-sharing-wrap .mec-event-sharing:after,.mec-event-footer-carousel-type2 .mec-event-sharing-wrap .mec-event-sharing:before{top:auto;bottom:-19px;border-color:#e2e2e2 transparent transparent transparent}.mec-event-footer-carousel-type2 .mec-event-sharing-wrap .mec-event-sharing:after{bottom:-18px;border-color:#fff transparent transparent transparent}@media only screen and (min-width:320px) and (max-width:768px){.mec-event-carousel-type2 .owl-next,.mec-event-carousel-type2 .owl-prev,.mec-event-carousel-type3 .owl-next,.mec-event-carousel-type3 .owl-prev,.mec-event-carousel-type4 .owl-next,.mec-event-carousel-type4 .owl-prev{position:initial;top:100%}}.mec-event-carousel-type3 .mec-event-article{margin:0 10px}.event-carousel-type3-head .mec-event-image,.event-carousel-type3-head .mec-event-image img{width:100%;height:auto}.event-carousel-type3-head .mec-event-footer-carousel-type3{background:#fff;display:inline-block;width:calc(100% - 40px);margin-top:-74px;position:relative;margin-left:20px;margin-right:20px;margin-bottom:6px;padding:8% 11%;box-shadow:0 2px 10px -2px rgba(0,0,0,.2)}.event-carousel-type3-head .mec-event-footer-carousel-type3 .mec-booking-button{border:1px solid #e4e4e4;text-transform:uppercase;float:right;padding:7px 23px 7px;font-size:12px;color:#707070;font-weight:500}.event-carousel-type3-head .mec-event-footer-carousel-type3 .mec-booking-button:hover{color:#fff}.mec-event-footer-carousel-type3 span{font-size:15px;color:#9a9a9a;font-weight:300;display:block;margin-top:30px}.mec-event-footer-carousel-type3 .mec-event-carousel-title{font-size:29px;font-weight:700}.event-carousel-type3-head .mec-event-footer-carousel-type3 .mec-event-carousel-title{font-size:26px;font-weight:700;color:#1c1d21;margin-top:15px;letter-spacing:-1px}.mec-event-footer-carousel-type3 .mec-event-carousel-title a{color:inherit}.event-carousel-type3-head .mec-event-footer-carousel-type3 p{font-size:16px;font-weight:300;color:#444!important;margin-bottom:36px}.mec-event-carousel-type3 .owl-next{right:-70px}.mec-event-carousel-type3 .owl-prev{left:-70px}.mec-event-footer-carousel-type3 .mec-event-sharing-wrap{left:11%}.mec-event-footer-carousel-type3 .mec-event-sharing-wrap .mec-event-sharing{top:auto;bottom:60px}.mec-event-footer-carousel-type3 .mec-event-sharing-wrap .mec-event-sharing:after,.mec-event-footer-carousel-type3 .mec-event-sharing-wrap .mec-event-sharing:before{top:auto;bottom:-19px;border-color:#e2e2e2 transparent transparent transparent}.mec-event-footer-carousel-type3 .mec-event-sharing-wrap .mec-event-sharing:after{bottom:-18px;border-color:#fff transparent transparent transparent}.event-carousel-type3-head .mec-end-date-label{display:inline;margin-left:2px}.event-carousel-type4-head.clearfix{position:relative;overflow:hidden;background:#fff}.event-carousel-type4-head .mec-event-overlay{position:absolute;left:0;right:0;bottom:0;top:0;width:auto;height:auto;background-color:rgba(36,36,36,.4);transition:all .33s ease-in-out}.mec-event-hover-carousel-type4{font-size:15px;color:#fff;position:absolute;bottom:0;padding:50px 35px;transition:all .33s ease-in-out;opacity:0;visibility:hidden}.mec-event-carousel-type4 .mec-event-article{margin:0 10px}.mec-event-carousel-type4 .mec-event-article:hover .mec-event-hover-carousel-type4{opacity:1;visibility:visible}.mec-event-hover-carousel-type4 .mec-event-icon{font-size:18px;float:left;margin-right:14px;color:#fff;padding:13px}.mec-event-hover-carousel-type4 .mec-event-date{font-size:11px;text-transform:uppercase;font-weight:400;line-height:1.6}.mec-event-hover-carousel-type4 .mec-event-date span{display:block;font-weight:700;font-size:14px}.mec-event-hover-carousel-type4 .mec-event-title{color:#fff;margin:20px 0 38px;font-size:16px;font-weight:700;text-transform:uppercase;font-style:normal}.mec-event-hover-carousel-type4 .mec-btn-wrapper{text-align:left}.mec-event-hover-carousel-type4 .mec-event-button{color:#fff;background-color:#191919;border:2px #191919 solid;padding:10px 14px;letter-spacing:1.5px;font-size:11px;font-weight:700;font-style:normal;transition:all .22s ease;text-decoration:none}.mec-event-hover-carousel-type4 .mec-event-button:hover{color:#191919;background-color:#fff;border-color:#fff;border-radius:1px}.mec-event-carousel-type4 .owl-next{right:-70px}.mec-event-carousel-type4 .owl-prev{left:-70px}.mec-carousel-type4-head{margin-bottom:25px}.mec-carousel-type4-head-title{padding:0 11px;text-align:left;font-weight:700;font-size:20px;color:#000}.mec-carousel-type4-head-link{text-align:right;padding:0 11px}.mec-carousel-type4-head-link a{background:#222;color:#fff;padding:10px 38px;transition:all .3s ease}.mec-carousel-type4-head-link a:hover,.mec-carousel-type4-head-link a:visited{color:#fff}@media (max-width:960px){.mec-event-carousel-type4 .owl-stage{left:-50px}}.mec-wrap .mec-event-countdown-style1{color:#fff;padding:0!important;display:table;background:#437df9}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part1{z-index:5;padding:50px 1% 50px 4%;display:table-cell;float:none;vertical-align:middle}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2{background-color:rgba(0,0,0,.05);height:100%;padding-top:0;display:table-cell;float:none;position:relative;vertical-align:middle}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part3{background-color:#f8f8f8;display:table-cell;float:none;text-align:center;vertical-align:middle}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part1 .mec-event-title{color:#fff;font-size:15px;margin-top:30px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part1 .mec-event-upcoming{font-size:36px;font-weight:700;line-height:1;margin-top:0}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2 .mec-event-countdown>div{display:inline-block}.mec-event-countdown-style1 .mec-events-meta-group-countdown{color:#c9c9c9;margin-bottom:30px;padding:20px 30px;background:#fff;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-countdown-style1 .mec-event-countdown-part1 .mec-event-upcoming span{display:block}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2:after{content:"";position:absolute;display:inline-block;z-index:1;top:50%;margin-top:-11px;right:-24px;width:0;border-width:12px;border-style:solid;border-color:transparent transparent transparent #4077ed}.mec-event-countdown-style1 .mec-event-countdown-part2 .mec-event-date-place{text-align:center;padding-bottom:8px}.mec-event-countdown-part2 .mec-event-place,.mec-event-countdown-style1 .mec-event-countdown-part2 .mec-event-date{display:inline;font-size:14px;padding:0 5px;text-align:center}.mec-event-countdown-style1 .mec-event-countdown-part3 .mec-event-button{display:inline-block;padding:14px 30px;vertical-align:middle;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#fff;background:#4077ed;transition:all .24s ease}.mec-event-countdown-style1 .mec-event-countdown-part3 .mec-event-button:hover{background:#222}.mec-event-countdown-style1 .mec-event-countdown{text-align:center;display:table;table-layout:fixed;margin:0 auto}.mec-event-countdown-style1 .mec-event-countdown .label-w{letter-spacing:1px;text-transform:uppercase;position:relative}.mec-event-countdown-style1 .mec-event-countdown .block-w{display:table-cell;margin:0 20px 10px;position:relative;height:70px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li{background-color:rgba(0,0,0,.1);margin:5px;padding:20px 0;min-width:94px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li span{font-size:30px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li .label-w{font-size:12px;color:#fff;margin:8px 0 0;line-height:1}@media only screen and (min-width:1200px){.mec-wrap.mec-sm959 .mec-event-countdown-style1 .mec-event-countdown-part1,.mec-wrap.mec-sm959 .mec-event-countdown-style1 .mec-event-countdown-part2,.mec-wrap.mec-sm959 .mec-event-countdown-style1 .mec-event-countdown-part3{width:100%;display:block;padding-top:50px;padding-bottom:50px}.mec-wrap.mec-sm959 .mec-event-countdown-style1 .mec-event-countdown-part2:after{border-color:#4077ed transparent transparent transparent;top:auto;margin-top:0;bottom:-24px;margin-left:-11px;left:50%}}@media (max-width:960px){.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part1,.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2,.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part3{width:100%;display:block;padding-top:50px;padding-bottom:50px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown-part2:after{border-color:#4077ed transparent transparent transparent;top:auto;margin-top:0;bottom:-24px;margin-left:-11px;left:50%;transform:rotate(90deg)}}@media (max-width:480px){.mec-event-countdown-style1 .mec-event-countdown .block-w{margin:3px;height:auto}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li{padding:10px 5px;min-width:50px;margin:3px 1px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li span{font-size:15px}.mec-wrap .mec-event-countdown-style1 .mec-event-countdown li .label-w{font-size:8px}.mec-event-countdown-style1 .mec-event-countdown-part2 .mec-event-date-place{display:inline}}.mec-wrap .mec-event-countdown-style2{color:#fff;padding:30px 0;background:#437df9;max-width:600px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part1,.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part2,.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part3{width:100%;float:none;vertical-align:middle;padding:50px 10% 50px 10%}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part2{padding-top:12%;padding-bottom:0}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part1 .mec-event-title{color:#fff;font-size:15px;margin-top:30px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part1 .mec-event-upcoming{font-size:36px;font-weight:700;line-height:1;margin-top:0}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown-part2 .mec-event-countdown>div{display:inline-block}.mec-event-countdown-style2 .mec-events-meta-group-countdown{color:#c9c9c9;margin-bottom:30px;padding:20px 30px;background:#fff;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-countdown-style2 .mec-event-countdown-part1 .mec-event-upcoming span{display:block}.mec-event-countdown-style2 .mec-event-countdown-part2 .mec-event-date-place{text-align:left;padding-bottom:8px}.mec-event-countdown-part2 .mec-event-place,.mec-event-countdown-style2 .mec-event-countdown-part2 .mec-event-date{display:inline;font-size:14px;padding:0 8px}.mec-event-countdown-style2 .mec-event-countdown-part3 .mec-event-button{display:inline-block;padding:14px 30px;vertical-align:middle;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#222;background:#fff;transition:all .24s ease}.mec-event-countdown-style2 .mec-event-countdown-part3 .mec-event-button:hover{background:#222;color:#fff}.mec-event-countdown-style2 .mec-event-countdown{text-align:center;display:table;table-layout:fixed;margin:0}.mec-event-countdown-style2 .mec-event-countdown .label-w{letter-spacing:1px;text-transform:uppercase;position:relative}.mec-event-countdown-style2 .mec-event-countdown .block-w{display:table-cell;margin:0 20px 10px;position:relative;height:70px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li{background-color:rgba(0,0,0,.1);margin:5px;padding:20px 0;min-width:94px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li span{font-size:30px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li .label-w{font-size:12px;color:#fff;margin:8px 0 0;line-height:1}@media only screen and (max-width:767px){.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li{min-width:80px;padding:15px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li span{font-size:26px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li .label-w{font-size:11px}}@media only screen and (max-width:479px){.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li{min-width:40px;padding:15px 10px;margin:2px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li span{font-size:20px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li .label-w{font-size:9px}}@media (max-width:380px){.mec-event-countdown-style2 .mec-event-countdown .block-w{margin:3px;height:auto}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li{padding:10px 4px;margin:4px 1px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li span{font-size:15px}.mec-wrap .mec-event-countdown-style2 .mec-event-countdown li .label-w{font-size:7px}}.mec-wrap .mec-event-countdown-style3{color:#fff;padding:0;background:#282828;display:table;width:100%}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1{width:68%;padding:50px 1% 50px 4%;vertical-align:middle;display:table-cell;position:relative}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part2{width:32%;display:table-cell;position:relative;padding-bottom:0;padding-top:0}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part2 img{width:100%;display:block}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-countdown-part-title span{font-weight:300;display:block}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-upcoming{color:#fff;font-size:36px;letter-spacing:-2px;font-weight:700;line-height:1;margin-top:-10px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part2 .mec-event-countdown>div{display:inline-block}.mec-event-countdown-style3 .mec-events-meta-group-countdown{color:#c9c9c9;margin-bottom:30px;padding:20px 30px;background:#fff;border:1px solid #e6e6e6;box-shadow:0 2px 0 0 rgba(0,0,0,.016)}.mec-event-countdown-style3 .mec-event-countdown-part2 .mec-event-date-place{text-align:center;padding-bottom:8px}.mec-event-countdown-part2 .mec-event-place,.mec-event-countdown-style3 .mec-event-countdown-part2 .mec-event-date{display:inline;font-size:14px;padding:0 5px;text-align:center}.mec-event-countdown-style3 .mec-event-countdown-part3 .mec-event-button{display:inline-block;padding:14px 30px;vertical-align:middle;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#fff;background:#4077ed;transition:all .24s ease}.mec-event-countdown-style3 .mec-event-countdown-part3 .mec-event-button:hover{background:#222}.mec-event-countdown-style3 .mec-event-countdown{text-align:center;display:table;table-layout:fixed;margin:0 auto;position:absolute;top:40px;right:20px}.mec-event-countdown-style3 .mec-event-countdown .label-w{letter-spacing:1px;text-transform:uppercase;position:relative}.mec-event-countdown-style3 .mec-event-countdown .block-w{display:table-cell;margin:0 20px 10px;position:relative;height:70px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li{padding:15px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li span{font-size:30px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li .label-w{font-size:11px;color:#888;margin:8px 0 0;line-height:1}.mec-event-countdown-style3 .mec-event-date{width:176px;height:96px;background:#40d9f1;color:#fff;font-size:13px;position:absolute;left:-27px;top:146px}.mec-event-countdown-style3 .mec-event-date:after{content:"";position:absolute;display:inline-block;z-index:1;bottom:-18px;left:8px;width:0;border-width:19px;border-style:solid;border-color:transparent transparent #40d9f1 transparent;transform:rotate(45deg)}.mec-event-countdown-style3 .mec-event-date .mec-date1{font-size:50px;position:absolute;top:36px;left:12px;letter-spacing:-3px}.mec-event-countdown-style3 .mec-event-date .mec-date2{position:absolute;left:80px;top:26px}.mec-event-countdown-style3 .mec-event-date .mec-date3{position:absolute;left:80px;top:45px}.mec-event-countdown-style3 .mec-event-countdown-part-details{padding-top:35px;margin-bottom:50px;min-height:100px}.mec-event-countdown-style3 .mec-event-countdown-part-details .mec-event-title{font-size:17px;color:#fff;line-height:1.4;padding-right:20px}.mec-event-countdown-style3 .mec-event-countdown-part-details .mec-event-link{color:#fff;font-size:12px;position:relative;padding-left:22px}.mec-event-countdown-style3 .mec-event-countdown-part-details .mec-event-link:before{content:"";display:inline-block;width:18px;border-top:1px solid #fff;position:absolute;left:0;top:8px}.mec-event-countdown-style3 .mec-event-title-link{position:absolute;left:190px;top:152px}.event-carousel-type1-head .mec-event-date-carousel:before,.mec-event-countdown-style3 .mec-event-date:before{content:'';position:absolute;left:0;bottom:0;z-index:2;width:100%;height:96px;background:0 0;display:inline-block;box-shadow:0 5px 5px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.mec-wrap.mec-sm959 .mec-event-countdown-style3 .mec-event-countdown li{padding:10px}.mec-wrap.mec-sm959 .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-upcoming{font-size:31px}}@media (max-width:959px){.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1,.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part2{width:100%;display:block}.mec-event-countdown-style3 .mec-event-title-link{top:190px}.mec-event-countdown-style3 .mec-event-countdown{top:96px}.mec-event-countdown-style3 .mec-event-date{left:0;top:190px}.mec-event-countdown-style3 .mec-event-date:after{display:none}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-countdown-part-title span{display:inline}.mec-event-countdown-style3 .mec-event-countdown-part-details{min-height:150px}}@media (max-width:767px){.mec-wrap .mec-event-countdown-style3 .mec-event-countdown-part1 .mec-event-upcoming{font-size:26px;letter-spacing:-1px}.mec-event-countdown-style3 .mec-event-title-link{left:130px}.mec-event-countdown-style3 .mec-event-date{width:120px;font-size:10px;height:63px}.mec-event-countdown-style3 .mec-event-date .mec-date1{font-size:36px;top:20px;left:4px;letter-spacing:-2px}.mec-event-countdown-style3 .mec-event-date .mec-date2{position:absolute;left:52px;top:12px}.mec-event-countdown-style3 .mec-event-date .mec-date3{position:absolute;left:52px;top:28px}}@media (max-width:380px){.mec-event-countdown-style3 .mec-event-title-link{left:10px;top:260px}.mec-event-countdown-style3 .mec-event-countdown-part-details{min-height:300px}.mec-event-countdown-style3 .mec-event-countdown .block-w{margin:3px;height:auto}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li{padding:10px 5px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li span{font-size:15px}.mec-wrap .mec-event-countdown-style3 .mec-event-countdown li .label-w{font-size:8px}}.mec-slider-t1-wrap{width:100%;padding:60px 90px;background:#f7f7f7;min-height:560px;position:relative}.mec-slider-t1{height:500px;box-shadow:0 5px 35px 0 rgba(0,0,0,.13)}.mec-slider-t1 .mec-event-article{position:relative;height:500px}.mec-slider-t1 .mec-slider-t1-img{position:relative;background-size:cover!important;background-position:center!important;width:50%;height:100%;float:right;margin:0;overflow:hidden}.mec-slider-t1 .mec-slider-t1-content{width:50%;float:left;height:100%;background:#fff;padding:6%}.mec-slider-t1-content.mec-event-grid-modern .mec-event-article{border:none;padding:0;margin:0;box-shadow:none}.mec-slider-t1-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t1-content.mec-event-grid-modern .mec-event-title a:hover{text-decoration:underline}.mec-slider-t1-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:54px;height:54px;line-height:48px;border-radius:0;text-align:center;background:#fff;box-shadow:0 2px 11px 0 rgba(0,0,0,.045);transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:50%;margin-top:-27px;cursor:pointer}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 29px 0 rgba(0,0,0,.095)}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next{left:auto;right:-100px}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev{right:auto;left:-100px}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:12px;color:#282828;transition:all .21s ease}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{font-size:13px;color:#000;cursor:pointer}@media only screen and (min-width:961px){.mec-slider-t1{margin:0 auto;max-width:900px}}@media only screen and (max-width:960px){.mec-slider-t1 .mec-slider-t1-content,.mec-slider-t1 .mec-slider-t1-img{width:100%;float:none}.mec-slider-t1 .mec-slider-t1-img{height:300px}.mec-slider-t1,.mec-slider-t1 .mec-event-article{height:auto}}@media only screen and (max-width:768px){.mec-slider-t1-wrap{padding:0}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev{top:40px;margin-top:0}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-next{left:auto;right:10px}.mec-slider-t1-wrap .mec-owl-theme .owl-nav .owl-prev{right:auto;left:10px}}@media only screen and (max-width:479px){.mec-slider-t1-content.mec-event-grid-modern .mec-event-title{font-size:22px}.mec-slider-t1-content.mec-event-grid-modern .event-grid-modern-head .mec-event-day{font-size:25px}}.mec-slider-t2-wrap{width:100%;padding:0;background:#fff;min-height:600px;position:relative}.mec-slider-t2 .mec-event-article{height:600px;position:relative;border:none;padding:0;margin:0;box-shadow:none;background:0 0}.mec-slider-t2 .mec-slider-t2-img{position:absolute;left:0;top:0;background-size:cover!important;background-position:center!important;width:70%;height:100%;margin:0;overflow:hidden}.mec-slider-t2 .mec-slider-t2-content{width:50%;position:absolute;right:0;top:60px;bottom:60px;padding:5%}.mec-slider-t2 .mec-slider-t2-content.mec-event-grid-modern *{color:#fff}.mec-slider-t2 .mec-slider-t2-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t2-content.mec-event-grid-modern .mec-event-content,.mec-slider-t2-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{background:0 0}.mec-slider-t2-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px}.mec-slider-t2-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover{background:#fff;color:#000;border-color:#fff}.mec-slider-t2-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover,.mec-slider-t2-content.mec-event-grid-modern .mec-event-title a:hover{color:#111}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:44px;height:44px;line-height:38px;border-radius:0;text-align:center;background:0 0;border:1px solid #fff;transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:84px;cursor:pointer}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.075);background:#fff}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next{right:30px}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev{right:82px}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:14px;color:#fff;opacity:1;transition:all .25s ease}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{color:#000;cursor:pointer}.mec-wrap.colorskin-custom .mec-slider-t2 .mec-event-article .mec-event-date.mec-color{color:#fff}@media only screen and (min-width:961px){.mec-slider-t2{margin:0 auto;max-width:1200px}}@media only screen and (max-width:960px){.mec-slider-t2 .mec-slider-t2-content,.mec-slider-t2 .mec-slider-t2-img{width:100%;float:none;position:static}.mec-slider-t2 .mec-slider-t2-img{height:300px}.mec-slider-t2 .mec-event-article{height:auto}.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t2-wrap .mec-owl-theme .owl-nav .owl-prev{top:40px}}@media only screen and (max-width:479px){.mec-slider-t2-content.mec-event-grid-modern .mec-event-title{font-size:22px}}.mec-slider-t3-wrap{width:100%;padding:0;background:#161616;min-height:700px;position:relative}.mec-slider-t3 .mec-event-article{height:700px;position:relative;border:none;padding:0;margin:0;box-shadow:none;background:0 0}.mec-slider-t3 .mec-slider-t3-img{position:absolute;left:0;top:0;background-size:cover!important;background-position:center!important;width:100%;height:100%;margin:0;overflow:hidden;opacity:.68;z-index:1}.mec-slider-t3 .mec-slider-t3-content{width:50%;height:auto;vertical-align:middle;display:table;position:absolute;left:0;top:0;bottom:0;padding:0 2% 0 7%;margin:auto 0;background:0 0;z-index:2}.mec-slider-t3 .mec-slider-t3-content.mec-event-grid-modern :not(.mec-color){color:#fff}.mec-slider-t3-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t3-content.mec-event-grid-modern .mec-event-content,.mec-slider-t3-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{background:0 0}.mec-slider-t3-content.mec-event-grid-modern .mec-booking-button{display:inline-block;border:1px solid;font-weight:500;letter-spacing:1px;text-transform:uppercase;font-size:13px;padding:0 42px;line-height:49px;height:50px;transition:all .21s ease}.mec-slider-t3-content.mec-event-grid-modern .mec-booking-button:hover{background:#fff;color:#000;border-color:#fff}.mec-slider-t3-content.mec-event-grid-modern .mec-slider-t3-footer{text-align:left;padding:15px 15px 10px}.mec-slider-t3-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover,.mec-slider-t3-content.mec-event-grid-modern .mec-event-title a:hover{color:#40d9f1}.mec-slider-t3-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover{border-color:#40d9f1}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:44px;height:44px;line-height:38px;border-radius:0;text-align:center;background:0 0;border:1px solid #fff;transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:50%;margin-top:-22px;cursor:pointer}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.075);background:#fff}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next{right:10px}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev{right:auto;left:10px}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:14px;color:#fff;opacity:1;transition:all .25s ease}.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{color:#000;cursor:pointer}@media only screen and (min-width:961px){.mec-slider-t3-content.mec-event-grid-modern .mec-event-title{font-size:50px;font-weight:300}.mec-slider-t3-content.mec-event-grid-modern .mec-event-description{font-size:19px}}@media only screen and (max-width:767px){.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t3-wrap .mec-owl-theme .owl-nav .owl-prev{top:40px;margin-top:0}}@media only screen and (max-width:479px){.mec-slider-t3 .mec-slider-t3-content{width:100%}.mec-slider-t3-content.mec-event-grid-modern .mec-event-title{font-size:22px}.mec-slider-t1-content.mec-event-grid-modern .event-grid-modern-head .mec-event-day{font-size:25px}}.mec-slider-t4-wrap{width:100%;padding:0;background:#161616;min-height:700px;position:relative}.mec-slider-t4 .mec-event-article{height:700px;border:none;padding:0;margin:0;box-shadow:none;background:0 0}.mec-slider-t4 .mec-slider-t4-img{position:absolute;left:0;top:0;background-size:cover!important;background-position:center!important;width:100%;height:100%;margin:0;overflow:hidden;z-index:1}.mec-slider-t4 .mec-slider-t4-content{width:auto;max-width:700px;background:rgba(37,37,37,.94)!important;height:auto;vertical-align:middle;display:table;position:absolute;left:8%;top:19%;padding:3%;margin:auto 0;background:0 0;z-index:2}.mec-slider-t4 .mec-slider-t4-content.mec-event-grid-modern :not(.mec-color){color:#fff}.mec-slider-t4-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t4-content.mec-event-grid-modern .mec-event-content,.mec-slider-t4-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{background:0 0}.mec-slider-t4-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:13px;padding:0 42px;line-height:49px;height:50px}.mec-slider-t4-content.mec-event-grid-modern .mec-event-title a:hover{color:#40d9f1}.mec-slider-t4-content.mec-event-grid-modern .mec-slider-t4-footer{text-align:left;padding:15px 15px 10px}.mec-slider-t4-content.mec-event-grid-modern .mec-booking-button{display:inline-block;border:1px solid;font-weight:500;letter-spacing:1px;text-transform:uppercase;font-size:13px;padding:0 42px;line-height:49px;height:50px;transition:all .21s ease}.mec-slider-t4-content.mec-event-grid-modern .mec-booking-button:hover{background:#fff;color:#000;border-color:#fff}.mec-slider-t4-content.mec-event-grid-modern .mec-event-footer .mec-booking-button:hover,.mec-slider-t4-content.mec-event-grid-modern .mec-event-title a:hover{color:#111}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:44px;height:44px;line-height:40px;border-radius:0;text-align:center;background:0 0;border:1px solid #fff;transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:34px;cursor:pointer}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.075);background:#fff}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next{right:60px}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev{right:112px}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:14px;color:#fff;opacity:1;transition:all .25s ease}.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t4-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{color:#000;cursor:pointer}@media only screen and (max-width:767px){.mec-slider-t4 .mec-slider-t4-content{width:100%;left:0;top:auto;bottom:0}.mec-slider-t4-content.mec-event-grid-modern .mec-event-title{font-size:22px}.mec-slider-t1-content.mec-event-grid-modern .event-grid-modern-head .mec-event-day{font-size:25px}}.mec-slider-t5-wrap{width:auto;max-width:570px;padding:0;margin:0 auto 25px;background:#f7f7f7;min-height:480px;position:relative}.mec-slider-t5{height:auto;box-shadow:0 5px 35px 0 rgba(0,0,0,.13)}.mec-slider-t5 .mec-event-article{position:relative;height:auto}.mec-slider-t5 .mec-slider-t5-img{position:relative;background-size:cover!important;background-position:center!important;width:100%;height:300px;float:none;margin:0;overflow:hidden}.mec-slider-t5 .mec-slider-t5-content{width:100%;float:none;height:100%;background:#fff;padding:0 20px 20px;margin-bottom:0}.mec-slider-t5 .mec-events-content p{margin-bottom:20px}.mec-slider-t5-content.mec-event-grid-modern .mec-event-article{border:none;padding:0;margin:0;box-shadow:none}.mec-slider-t5-wrap .mec-event-grid-modern .event-grid-modern-head{margin-bottom:10px;padding:14px 34px;margin-left:-20px;margin-right:-20px;text-align:left;background:#f9f9f9;border-bottom:1px solid #eee}.mec-slider-t5-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-slider-t5 .mec-slider-t5-col6{width:50%;float:left;height:100%}.mec-slider-t5 .mec-slider-t5-col6 i{font-size:42px;float:left;margin-right:7px;height:58px}.mec-slider-t5 .mec-slider-t5-col6 h6{text-transform:uppercase;font-size:17px;padding:4px 0;display:inline;color:#444}.mec-slider-t5 .mec-slider-t5-col6 address{font-size:12px;margin-bottom:0}.mec-slider-t5-content.mec-event-grid-modern .mec-event-title a:hover{text-decoration:underline}.mec-slider-t5-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px;top:0}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next,.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev{opacity:1;width:44px;height:44px;line-height:40px;border-radius:0;text-align:center;background:0 0;border:1px solid #fff;transition:all .25s ease;-webkit-transition:all .25s ease;position:absolute;top:34px;cursor:pointer}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next:hover,.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev:hover{box-shadow:0 4px 16px 0 rgba(0,0,0,.075);background:#fff}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next{right:30px}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev{right:82px}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next i,.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev i{font-size:14px;color:#fff;opacity:1;transition:all .25s ease}.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-next:hover i,.mec-slider-t5-wrap .mec-owl-theme .owl-nav .owl-prev:hover i{color:#000;cursor:pointer}@media only screen and (max-width:768px){.mec-slider-t5 .mec-slider-t5-col6{width:100%;margin:10px 0}}@media only screen and (max-width:479px){.mec-slider-t5-content.mec-event-grid-modern .mec-event-title{font-size:24px}}.mec-single-modern .mec-events-event-image{text-align:center}.mec-single-modern .mec-events-event-image img{width:100%}.mec-single-modern .mec-single-event-bar{background-color:#f7f7f7;margin:20px 0 0;padding:15px;display:table;width:100%}.mec-single-modern .mec-single-event-bar>div{display:table-cell}.mec-single-modern .mec-single-event-bar>div i{font-size:20px;vertical-align:middle}.mec-single-modern .mec-single-event-bar>div .mec-time-comment{font-size:12px;color:#999}.mec-single-modern .mec-single-event-bar>div h3{text-transform:uppercase;font-size:16px;font-weight:700;padding-bottom:5px;display:inline;color:#000;padding-left:10px}.mec-single-modern .mec-single-event-bar>div dd{font-size:14px;color:#8d8d8d;padding-left:34px;margin-bottom:0}.mec-single-modern .col-md-4 .mec-frontbox{margin-top:-50px;margin-bottom:70px;padding:20px;border:none;background:#f7f7f7;box-shadow:none}.mec-next-occurrence li{list-style:none}@media only screen and (min-width:960px){.mec-single-modern .col-md-4 .mec-frontbox{margin-left:20px}}@media only screen and (max-width:960px){.mec-single-modern .mec-single-event-bar>div{display:block}}.lity-content>div{overflow:auto}.mec-next-event-details li{list-style:none;margin-top:20px}.mec-next-event-details h6{text-transform:uppercase;font-size:13px;padding-bottom:5px;display:inline;color:#222;padding-left:0}.mec-next-event-details abbr{display:block;padding-left:12px;color:#8d8d8d}.mec-next-event-details i{margin-right:10px;margin-left:12px}.mec-next-event-details i:before{color:#40d9f1}.mec-next-event-details a{text-align:center;display:block;background:#fff;padding:6px 0;font-size:11px;font-weight:400;letter-spacing:0;border:1px solid #e3e3e3;transition:.3s}.mec-single-modal.mec-single-modern .mec-single-title{text-align:center;padding:15px 10px 0}.admin-bar .mec-single-modal.mec-single-modern .mec-single-title{padding-top:40px}.mec-single-modal.mec-single-modern .mec-single-event-bar{padding:5px}.mec-single-modal.mec-single-modern .mec-single-event-bar>div dd{font-size:13px}.mec-single-modal.mec-single-modern .mec-single-event-bar>div h3{font-size:15px}@media only screen and (min-width:960px){.mec-single-modal.mec-single-modern .col-md-4 .mec-frontbox{margin-left:0}}.mec-single-modal.mec-single-modern .col-md-4 .mec-frontbox{margin-top:10px;margin-bottom:10px}.mec-single-modal.mec-single-modern .col-md-4 .mec-frontbox.mec-event-meta{padding:0}.mec-single-modal .mec-event-meta dd.mec-organizer-email a,.mec-single-modal .mec-event-meta dd.mec-organizer-url a{font-size:12px;display:block}.mec-modal-wrap{max-width:60vw;max-height:90vh!important;background:#fff;box-shadow:0 1px 55px rgba(0,0,0,.5);overflow-x:hidden!important}@media(max-width:1023px){.mec-modal-wrap{max-width:80vw}}.mec-single-modal .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li,.mec-single-modal .mec-event-export-module.mec-frontbox .mec-event-exporting .mec-export-details ul li a.mec-events-button{display:block;text-align:center}.mec-single-modal .flip-clock-divider .flip-clock-label{position:absolute;top:60px}.mec-single-modal .flip-clock-divider:not(:first-child){width:48px!important}.mec-single-modal .flip-clock-divider.minutes .flip-clock-label{top:150px;left:-539px}.mec-single-modal .flip-clock-divider.seconds .flip-clock-label{top:87px}.mec-single-modal .flip-clock-wrapper{left:14%}.mec-single-modal .twodaydigits>ul:nth-child(11),.mec-single-modal .twodaydigits>ul:nth-child(12),.mec-single-modal .twodaydigits>ul:nth-child(8),.mec-single-modal .twodaydigits>ul:nth-child(9){margin-top:30px!important}.mec-events-toggle{max-width:960px;margin-left:auto;margin-right:auto}.mec-events-toggle .mec-toggle-item{border:1px solid #e4e4e4;margin-bottom:15px;box-shadow:0 10px 15px #f3f3f3}.mec-events-toggle .mec-toggle-item-inner{cursor:pointer;position:relative;padding:30px 60px 30px 15px;background:#fff;transition:all .3s ease}.mec-events-toggle .mec-toggle-item-inner:hover{background:#fbfbfb}.mec-toggle-item-col{float:left;width:180px;margin-top:-6px;border-right:1px solid #e3e3e3;margin-right:15px}.mec-toggle-item-col .mec-event-date{font-size:38px;line-height:40px;float:left;margin-right:8px}.mec-toggle-item-col .mec-event-month{text-transform:uppercase;font-size:12px;line-height:14px;padding-top:4px;font-weight:700}.mec-toggle-item-col .mec-event-detail{font-size:10px}.mec-toggle-item-col .mec-event-day{margin-top:9px;color:silver;font-family:Roboto,sans-serif;font-size:35px;font-weight:100;text-transform:uppercase;letter-spacing:-1px}.mec-events-toggle .mec-toggle-title{color:#000;font-size:23px;font-weight:600;margin-bottom:0;transition:all .3s ease;display:inline-block}.mec-events-toggle .mec-toggle-item-inner span.event-color{width:5px;height:100%;position:absolute;left:-1px;top:0;bottom:0;border-radius:0;margin:0}.mec-events-toggle .mec-toggle-item-inner i{position:absolute;font-size:30px;right:25px;top:50%;transform:translate(0,-50%);cursor:pointer}.mec-events-toggle .mec-toggle-item.is-open i.mec-sl-plus:before{content:"\e615"}.mec-events-toggle .mec-toggle-item.is-open .mec-toggle-title{background:#f8f8f8;cursor:pointer}.mec-events-toggle .mec-toggle-content{border-top:1px solid #e4e4e4}.mec-events-toggle .mec-toggle-content .mec-modal-wrap{margin:0;max-width:100%;box-shadow:none}.mec-events-toggle .mec-toggle-content .mec-modal-wrap .mec-single-event{margin:0}.mec-events-toggle .mec-toggle-content .mec-single-event-bar,.mec-events-toggle .mec-toggle-content h1.mec-single-title{display:none}.mec-events-toggle .media-links a{margin-bottom:0}.mec-events-toggle .mec-toggle-content .mec-toggle-meta{margin-bottom:14px}.mec-events-toggle #mec_speakers_details.mec-frontbox{padding:0;margin:0}.mec-events-toggle .mec-toggle-item h3.mec-speakers{border:none;text-align:left}.mec-events-toggle .mec-toggle-item h3.mec-speakers:before{content:"\e063";font-family:simple-line-icons;border:none;position:relative;display:inline-block;left:unset;bottom:unset;font-size:22px;font-weight:400;padding:0 11px 0 28px;vertical-align:middle}@media only screen and (max-width:767px){.mec-toggle-item-col{float:none;width:100%;border-right:none;margin-bottom:5px}}.mec-events-agenda-wrap{margin:10px 0;border:1px solid #e9e9e9;padding-left:20px;box-shadow:0 2px 2px rgba(0,0,0,.03)}.mec-events-agenda{padding:0;border-bottom:1px solid #e9e9e9;overflow:hidden}.mec-agenda-date-wrap{width:210px;padding-top:15px;float:left;font-size:13px}.mec-agenda-date-wrap i,.mec-agenda-event i{font-size:11px;color:#aaa;margin-right:4px;margin-left:1px}.mec-agenda-event i{vertical-align:middle;margin-right:1px}.mec-agenda-events-wrap{float:left;width:calc(100% - 210px);background:#f9f9f9;padding:15px}.mec-agenda-time{font-size:11px;color:#707070;padding-right:10px;width:138px;display:inline-block}.mec-agenda-event-title{position:relative;padding-left:14px}.mec-agenda-event-title a{font-family:Roboto,Montserrat,Helvetica,Arial,sans-serif;font-size:14px;font-weight:600;color:#333}.mec-agenda-event-title span.event-color{width:9px;height:9px;position:absolute;left:0;top:4px;margin:0}.mec-agenda-date-wrap span.mec-agenda-day{color:#aaa;font-size:12px}@media only screen and (max-width:767px){.mec-agenda-date-wrap,.mec-agenda-events-wrap{float:none;width:100%}.mec-events-agenda span.mec-agenda-event-title{display:block;width:100%}.mec-agenda-event-title span.event-color{top:7px}.mec-agenda-event-title a{font-size:13px}}.mec-yearly-view-wrap{margin:0 0 15px;border:1px solid #e6e6e6;box-shadow:0 2px 4px rgba(0,0,0,.04);border-bottom-width:4px}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar{max-width:100%;width:232px;padding:10px;background:#fff;margin:10px;display:inline-block}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar dl dt{transition:none;height:30px;width:30px;line-height:30px;border-radius:0;font-size:12px}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar .mec-calendar-events-sec{padding:10px}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar .mec-has-event:after{width:4px;height:4px;bottom:3px;margin-left:-2px}.mec-yearly-view-wrap .mec-calendar-side .mec-calendar-table{min-height:200px}.mec-calendar.mec-yearly-calendar .mec-calendar-table-head dl dt{background:#f9f9f9;font-size:13px}.mec-calendar.mec-yearly-calendar .mec-calendar-table-title{text-align:center;font-size:15px;font-weight:700;color:#222;margin-top:-5px;padding-bottom:5px}.mec-yearly-view-wrap .mec-yearly-calendar-sec{min-height:200px;width:538px;overflow:hidden;float:left;background:#f8f8f8;padding:15px}.mec-yearly-view-wrap .mec-yearly-agenda-sec{min-height:200px;width:calc(100% - 538px);float:left;padding:0 0 0 20px;overflow:hidden}.mec-yearly-view-wrap .mec-yearly-title-sec{position:relative;padding:15px;text-align:center;border-bottom:1px solid #e6e6e6;box-shadow:0 1px 3px rgba(0,0,0,.02)}.mec-yearly-view-wrap .mec-yearly-title-sec h2{font-size:30px;line-height:40px;color:#333;margin:0;font-weight:700}.mec-yearly-view-wrap .mec-yearly-title-sec .mec-next-year,.mec-yearly-view-wrap .mec-yearly-title-sec .mec-previous-year{position:absolute;top:50%;margin-top:-15px;min-width:30px;height:30px;line-height:30px;padding:0 8px;text-align:center;background:#fff;color:#666;font-size:14px;border:1px solid #eee;border-radius:2px;box-shadow:0 2px 0 0 rgba(0,0,0,.015);transition:all .33s ease;cursor:pointer}.mec-yearly-view-wrap .mec-yearly-title-sec .mec-previous-year{right:auto;left:20px;padding-right:14px}.mec-yearly-view-wrap .mec-yearly-title-sec .mec-next-year{left:auto;right:20px;padding-left:14px}.mec-yearly-view-wrap .mec-yearly-title-sec .mec-next-year i,.mec-yearly-view-wrap .mec-yearly-title-sec .mec-previous-year i{font-size:12px;color:#40d9f1;cursor:pointer}@media only screen and (max-width:959px){.mec-yearly-view-wrap .mec-yearly-calendar-sec{width:268px;padding:10px 5px}.mec-yearly-view-wrap .mec-yearly-agenda-sec{width:calc(100% - 268px);padding:0 0 0 10px}}@media only screen and (max-width:767px){.mec-yearly-view-wrap .mec-yearly-agenda-sec,.mec-yearly-view-wrap .mec-yearly-calendar-sec{width:100%;float:none}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar{width:auto}.mec-yearly-view-wrap .mec-calendar.mec-yearly-calendar dl dt{width:14.2%}.mec-yearly-view-wrap .mec-yearly-title-sec h2{font-size:25px}}.mec-yearly-view-wrap .mec-agenda-event i,.mec-yearly-view-wrap .mec-agenda-time{display:none}@media only screen and (min-width:768px){.mec-yearly-view-wrap .mec-events-agenda-wrap{margin-top:0;border:none;padding-left:0;box-shadow:none}.mec-yearly-view-wrap .mec-agenda-date-wrap{width:174px;font-size:11px;padding-top:10px}.mec-yearly-view-wrap .mec-agenda-events-wrap{width:calc(100% - 174px);padding:10px}.mec-yearly-view-wrap .mec-agenda-event-title a{font-size:13px}.mec-yearly-view-wrap .mec-agenda-event-title span.event-color{width:8px;height:8px}.mec-yearly-view-wrap .mec-agenda-date-wrap span.mec-agenda-day{font-size:11px}.mec-yearly-view-wrap .mec-yearly-calendar-sec{box-shadow:-2px 0 5px rgba(0,0,0,.03) inset}}@media only screen and (max-width:1200px){.mec-yearly-view-wrap .mec-agenda-event-title a{font-size:12px;padding-right:6px}}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table{padding-bottom:10px;border-bottom:none}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt:hover{cursor:pointer}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt.mec-timetable-has-no-event,.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt.mec-timetable-has-no-event:hover{color:#bbb;cursor:default}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt.mec-timetable-day-active{background:#40d9f1;color:#fff;position:relative}.mec-calendar.mec-calendar-timetable .mec-calendar-d-table dl dt.mec-timetable-day-active:after{content:'';position:absolute;display:block;bottom:-20px;left:50%;margin-left:-10px;width:0;border-width:10px;border-style:solid;border-color:#40d9f1 transparent transparent transparent}.mec-timetable-events-list{padding:10px 20px;border:none;margin:0}.mec-timetable-events-list .mec-timetable-event{padding:10px 0;border-bottom:1px dashed #ddd}.mec-timetable-events-list .mec-timetable-event:last-child{border:none}.mec-timetable-event .mec-timetable-event-span{font-size:12px;color:#444;padding-right:30px;line-height:22px}.mec-timetable-events-list .mec-timetable-event i{font-size:13px;color:#aaa;margin-right:3px;vertical-align:baseline}.mec-timetable-event .mec-timetable-event-span a{color:#333}.mec-timetable-event .mec-timetable-event-time{font-size:11px}.mec-timetable-event .mec-timetable-event-time i{vertical-align:text-bottom}.mec-timetable-event .mec-timetable-event-title{font-size:13px}.mec-timetable-event .mec-timetable-event-title .event-color{width:10px;height:10px}.mec-timetable-events-list .mec-timetable-event.mec-util-hidden{display:none}.mec-timetable-events-list.mec-util-hidden{display:none}@media only screen and (min-width:768px){.mec-timetable-events-list{display:table;width:100%;margin:10px 0 20px}.mec-timetable-events-list .mec-timetable-event{display:table-row;padding:0;border:none;background:#fff}.mec-timetable-events-list .mec-timetable-event:hover{background:#fafafa}.mec-timetable-event .mec-timetable-event-span{display:table-cell;padding:10px 15px;border-bottom:1px solid #ebebeb}.mec-timetable-events-list .mec-timetable-event:last-child .mec-timetable-event-span{border-bottom:none}}@media only screen and (max-width:767px){.mec-timetable-event .mec-timetable-event-title{display:block;width:100%;padding:5px 0 10px;font-weight:700}}.mec-timetable-t2-wrap{border:1px solid #e6e6e6;background:#fafafa;padding:0 15px 15px;overflow:hidden;box-shadow:0 3px 2px 0 rgba(0,0,0,.012)}.mec-timetable-t2-col{width:20%;float:left;min-height:20px;padding-right:1px;background:0 0}.mec-ttt2-title{background:#fafafa;color:#333;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:1px;text-align:center;padding:25px 10px 10px;margin-bottom:1px}.mec-timetable-t2-col .mec-event-article{position:relative}.mec-timetable-t2-col .mec-event-article .event-color{position:absolute;width:auto;height:auto;left:0;right:0;top:0;bottom:0;margin:0;z-index:1;border-radius:2px}.mec-timetable-t2-content{position:relative;z-index:2;color:#fff;padding:15px 15px 20px;text-align:left;height:130px;margin-bottom:1px;overflow:hidden}.mec-timetable-t2-content .mec-event-title{line-height:22px;margin-bottom:13px;white-space:nowrap;padding-right:1px;overflow:hidden}.mec-timetable-t2-content .mec-event-title a{color:#fff;font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden}.mec-timetable-t2-content div{color:#fff;font-size:11px;font-weight:400;line-height:19px;white-space:nowrap}.mec-timetable-t2-content div i{font-size:12px;margin-right:4px}@media only screen and (max-width:960px){.mec-timetable-t2-col{width:100%;float:none}}@media(min-width:961px){.mec-timetable-col-7{width:14.28%}.mec-timetable-col-6{width:16.6666%}}.mec-weather-box{padding:15px 0}.mec-weather-head{min-height:90px;padding:5px 0;clear:both;overflow:hidden;margin-bottom:25px;border-radius:10px;background:#238af5;position:relative}.mec-weather-icon-box{float:left;width:80px;height:80px;border-radius:10px;overflow:hidden;background:#238af5}.mec-weather-icon{width:80px;height:80px;display:inline-block;border-radius:10px}.mec-weather-summary{float:left;width:calc(100% - 80px);padding-left:10px;margin:10px 0;height:60px}.mec-weather-summary-report{font-size:15px;color:rgba(255,255,255,.68);margin-bottom:6px}.mec-weather-summary-temp{font-family:Roboto,Sans-serif;font-weight:300;color:#fff;font-size:29px;line-height:1}.degrees-mode{background:rgba(0,0,0,.2);cursor:pointer;font-weight:300;font-size:18px;padding:4px 5px;line-height:1;color:#fff;position:absolute;border-radius:8px;bottom:16px;left:16px}.mec-weather-extras{width:auto;padding:10px 15px 0 15px;float:right;min-height:80px;color:#fff;font-size:13px;line-height:1}.mec-weather-extras{width:auto;padding:10px 15px 0 15px;float:right;min-height:80px;color:#fff;font-size:13px;line-height:1}.mec-weather-extras div{line-height:20px;height:20px}.mec-weather-extras span{color:rgba(255,255,255,.68);font-size:12px;text-transform:uppercase}.mec-weather-extras var{font-size:11px;letter-spacing:.4px}.mec-weather-icon.clear-day,.mec-weather-icon.clear-night{background-image:url(../img/mec-weather-icon-01.png)}.mec-weather-icon.partly-sunny-day,.mec-weather-icon.partly-sunny-night{background-image:url(../img/mec-weather-icon-02.png)}.mec-weather-icon.partly-cloudy-day,.mec-weather-icon.partly-cloudy-night{background-image:url(../img/mec-weather-icon-03.png)}.mec-weather-icon.cloudy,.mec-weather-icon.fog,.mec-weather-icon.wind{background-image:url(../img/mec-weather-icon-04.png)}.mec-weather-icon.thunderstorm{background-image:url(../img/mec-weather-icon-05.png)}.mec-weather-icon.rain{background-image:url(../img/mec-weather-icon-06.png)}.mec-weather-icon.hail,.mec-weather-icon.sleet,.mec-weather-icon.snow{background-image:url(../img/mec-weather-icon-07.png)}.mec-av-spot-wrap{width:auto;max-width:1200px;padding:0;margin:0 auto 25px;background:#f7f7f7;min-height:480px;position:relative}.mec-av-spot{height:auto;border:1px solid #eee;box-shadow:0 6px 12px -4px rgba(0,0,0,.05)}.mec-av-spot .mec-event-article{position:relative;height:auto}.mec-av-spot .mec-av-spot-img{position:relative;background-size:cover!important;background-position:center!important;width:100%;height:330px;float:none;margin:0;overflow:hidden}.mec-av-spot .mec-av-spot-content,.mec-av-spot .mec-av-spot-head{width:100%;float:none;height:100%;background:#fff;padding:0 20px 20px;margin-bottom:0}.mec-av-spot .mec-av-spot-head{background:#222;color:#fff;min-height:80px}.mec-av-spot .mec-av-spot-head .mec-av-spot-box{padding-top:25px;font-size:13px;color:#ddd}.mec-av-spot .mec-av-spot-head .mec-av-spot-box span{color:#40d9f1;font-size:40px;font-weight:700;font-style:italic}.mec-av-spot .mec-av-spot-head .mec-event-countdown{text-align:center;padding-top:10px;display:table;table-layout:fixed;margin:0 auto;float:right}.mec-av-spot .mec-av-spot-head .mec-event-countdown li{display:table-cell;padding:10px 20px;position:relative;height:60px}.mec-av-spot .mec-av-spot-head .mec-event-countdown p{margin-bottom:0}.mec-av-spot .mec-events-content p{margin-bottom:20px}.mec-av-spot-content.mec-event-grid-modern .mec-event-article{border:none;padding:0;margin:0;box-shadow:none}.mec-av-spot-wrap .mec-event-grid-modern .event-grid-modern-head{margin-bottom:10px;padding:14px 34px;margin-left:-20px;margin-right:-20px;text-align:left;background:#f9f9f9;border-bottom:1px solid #eee}.mec-av-spot-content.mec-event-grid-modern .mec-event-title{font-size:29px}.mec-av-spot .mec-av-spot-col6{width:50%;float:left;height:100%}.mec-av-spot .mec-av-spot-col6 i{font-size:42px;float:left;margin-right:7px;height:58px}.mec-av-spot .mec-av-spot-col6 h6{text-transform:uppercase;font-size:17px;padding:4px 0;display:inline;color:#444}.mec-av-spot .mec-av-spot-col6 address{font-size:12px;margin-bottom:0}.mec-av-spot-content.mec-event-grid-modern .mec-event-title a:hover{text-decoration:underline}.mec-av-spot-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px;top:0;box-shadow:0 5px 11px -3px rgba(0,0,0,.05)}@media only screen and (max-width:768px){.mec-av-spot .mec-av-spot-col6{width:100%;margin:10px 0}}@media only screen and (max-width:479px){.mec-av-spot-content.mec-event-grid-modern .mec-event-title{font-size:24px}}.mec-events-masonry-wrap{display:block;width:auto}.mec-masonry-item-wrap{width:calc(33.33% - 30px);padding:0;margin:0 15px 30px;min-height:10px;position:relative}.isotope-item{z-index:2}.isotope-hidden.isotope-item{pointer-events:none;z-index:1}.isotope,.isotope .isotope-item{-webkit-transition-duration:.8s;-moz-transition-duration:.8s;transition-duration:.8s}.isotope{-webkit-transition-property:height,width;-moz-transition-property:height,width;transition-property:height,width}.isotope .isotope-item{-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;transition-property:transform,opacity}.mec-events-masonry-cats{padding:10px;margin-bottom:25px;text-align:center;clear:both;list-style:none outside none}.mec-events-masonry-cats a{border-radius:2px;padding:6px 12px;font-size:13px;line-height:1.2;color:#333;font-weight:400;margin-top:0!important;text-align:center;display:inline-block;width:auto;border:2px solid transparent;transition:all .2s ease}.mec-events-masonry-cats a:hover{border-color:#40d9f1;color:#333}.mec-events-masonry-cats a.mec-masonry-cat-selected{border:2px solid #40d9f1;color:#40d9f1}.mec-masonry{background:#f7f7f7;height:auto;border:1px solid #eee;box-shadow:0 6px 12px -4px rgba(0,0,0,.05)}.mec-masonry .mec-event-article{position:relative;height:auto}.mec-masonry .mec-masonry-img{position:relative;width:100%;height:auto;float:none;margin:0;overflow:hidden}.mec-masonry .mec-masonry-img img{width:100%}.mec-masonry .mec-masonry-content,.mec-masonry .mec-masonry-head{width:100%;float:none;height:100%;background:#fff;padding:0 20px 20px;margin-bottom:0}.mec-masonry .mec-events-content p{margin-bottom:20px}.mec-masonry-content.mec-event-grid-modern .mec-event-article{border:none;padding:0;margin:0;box-shadow:none}.mec-masonry-item-wrap .mec-event-grid-modern .event-grid-modern-head{min-height:79px;margin-bottom:10px;padding:14px 5%;margin-left:-20px;margin-right:-20px;text-align:left;background:#f9f9f9;border-bottom:1px solid #eee}.mec-masonry-content.mec-event-grid-modern .mec-event-title{font-size:22px}.mec-masonry-content.mec-event-grid-modern .mec-event-content{padding-top:20px}.mec-masonry-content.mec-event-grid-modern .mec-event-footer{height:auto}.mec-masonry .mec-masonry-col6 .mec-event-date{font-size:34px;letter-spacing:-2px}.mec-masonry .mec-masonry-col6{width:50%;float:left;height:100%}.mec-masonry .mec-masonry-col6 i{font-size:24px;float:left;margin-right:7px;height:50px}.mec-masonry .mec-masonry-col6 .mec-event-month,.mec-masonry .mec-masonry-col6 h6{text-transform:capitalize;font-size:15px;padding:4px 0;display:inline;color:#444}.mec-masonry .mec-masonry-col6 .mec-event-detail,.mec-masonry .mec-masonry-col6 address{font-size:11px;margin-bottom:0}.mec-masonry-content.mec-event-grid-modern .mec-event-title a:hover{text-decoration:underline}.mec-masonry-content.mec-event-grid-modern .mec-event-footer .mec-booking-button{font-size:12px;padding:0 31px;line-height:49px;height:50px;top:0;box-shadow:0 5px 11px -3px rgba(0,0,0,.05)}@media only screen and (max-width:960px){.mec-masonry-item-wrap{width:calc(50% - 30px)}}@media only screen and (max-width:768px){.mec-masonry .mec-masonry-col6{width:100%;margin:10px 0}.mec-masonry-item-wrap{width:calc(100% - 30px)}}@media only screen and (max-width:479px){.mec-masonry-content.mec-event-grid-modern .mec-event-title{font-size:24px}}.btn-wrapper{text-align:center}.countdown-wrapper .btn-wrapper{padding-top:10px;padding-right:0}.countdown-wrapper h5.countdown-message{letter-spacing:5px;font-weight:500;font-size:18px}.blox.dar .countdown-wrapper p,.countdown-wrapper p{color:#888}.countdown-wrapper a.button.black{float:right;margin-right:0}.mec-wrap .threedaydigits .days .flip-clock-label{right:-100px}@media only screen and (min-width:320px) and (max-width:767px){.mec-wrap .flip-clock-wrapper ul{width:29px!important}.mec-wrap .flip-clock-wrapper ul li a div div.inn{font-size:25px!important}.mec-wrap .flip-clock-divider .flip-clock-label{left:0;font-weight:300}.mec-wrap span.flip-clock-divider{width:12px}}@media only screen and (min-width:320px) and (max-width:480px){.mec-wrap .flip-clock-wrapper ul{width:29px!important}.mec-wrap .flip-clock-wrapper ul li a div div.inn{font-size:25px!important}.mec-wrap .flip-clock-divider .flip-clock-label{display:none}.mec-wrap span.flip-clock-divider:first-child{width:0}.mec-wrap span.flip-clock-divider{width:20px}.mec-single-event .mec-events-meta-group-countdown{margin-left:10%}}@media screen and (min-width:960px) and (max-width:1200px){.mec-wrap .threedaydigits ul{height:50px;width:47px}}@media screen and (min-width:480px) and (max-width:768px){.mec-wrap .threedaydigits ul{height:48px;width:26px!important}.mec-wrap .threedaydigits .flip-clock-label{font-size:8px;left:-8px}}@media screen and (min-width:320px) and (max-width:480px){.mec-wrap .threedaydigits ul{height:48px;width:22px!important}}.mec-wrap .flip-clock-wrapper *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden}.mec-wrap .flip-clock-wrapper a{cursor:pointer;text-decoration:none;color:#ccc}.mec-wrap .flip-clock-wrapper a:hover{color:#fff}.mec-wrap .flip-clock-wrapper ul{list-style:none}.flip-clock-wrapper.clearfix:after,.mec-wrap .flip-clock-wrapper.clearfix:before{content:" ";display:table}.mec-wrap .flip-clock-wrapper.clearfix:after{clear:both}.mec-wrap .flip-clock-wrapper{font:normal 11px "helvetica neue",helvetica,sans-serif;-webkit-user-select:none}.mec-wrap .flip-clock-meridium{background:0 0!important;box-shadow:0 0 0!important;font-size:36px!important}.mec-wrap .flip-clock-meridium a{color:#313333}.mec-wrap .flip-clock-wrapper{text-align:center;position:relative;display:inline-block;padding-bottom:10px}.flip-clock-wrapper:after,.mec-wrap .flip-clock-wrapper:before{content:" ";display:table}.mec-wrap .flip-clock-wrapper:after{clear:both}.mec-wrap .flip-clock-wrapper ul{position:relative;float:left;margin:2px;width:50px;height:50px;font-size:80px;font-weight:700;line-height:87px;border-radius:3px;background:rgba(0,0,0,.21)}.mec-wrap .flip-clock-wrapper ul li{z-index:1;position:absolute;left:0;top:0;width:100%;height:100%;line-height:54px;text-decoration:none!important}.mec-wrap .flip-clock-wrapper ul li:first-child{z-index:2}.mec-wrap .flip-clock-wrapper ul li a{display:block;height:100%;-webkit-perspective:200px;-moz-perspective:200px;perspective:200px;margin:0!important;overflow:visible!important;cursor:default!important}.mec-wrap .flip-clock-wrapper ul li a div{z-index:1;position:absolute;left:0;width:100%;height:50%;font-size:80px;overflow:hidden;outline:1px solid transparent}.mec-wrap .flip-clock-wrapper ul li a div .shadow{position:absolute;width:100%;height:100%;z-index:2}.mec-wrap .flip-clock-wrapper ul li a div.up{-webkit-transform-origin:50% 100%;-moz-transform-origin:50% 100%;-ms-transform-origin:50% 100%;-o-transform-origin:50% 100%;transform-origin:50% 100%;top:0}.mec-wrap .flip-clock-wrapper ul li a div.up:after{content:"";position:absolute;top:24px;left:0;z-index:5;width:100%;height:3px;background-color:rgba(0,0,0,.12)}.mec-wrap .flip-clock-wrapper ul li a div.down{-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;-o-transform-origin:50% 0;transform-origin:50% 0;bottom:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.mec-wrap .flip-clock-wrapper ul li a div div.inn{position:absolute;left:0;z-index:1;width:100%;height:200%;color:#fff;text-shadow:0 0 2px rgba(0,0,0,.25);text-align:center;background-color:#40d9f1;border-radius:3px;font-size:48px}.mec-wrap .flip-clock-wrapper ul li a div.up div.inn{top:0}.mec-wrap .flip-clock-wrapper ul li a div.down div.inn{bottom:0}.mec-wrap .flip-clock-wrapper ul.play li.flip-clock-before{z-index:3}.mec-wrap .flip-clock-wrapper .flip{box-shadow:0 2px 5px rgba(0,0,0,.17)}.mec-wrap .flip-clock-wrapper ul.play li.flip-clock-active{-webkit-animation:asd .5s .5s linear both;-moz-animation:asd .5s .5s linear both;animation:asd .5s .5s linear both;z-index:5}.mec-wrap .flip-clock-divider{float:left;display:inline-block;position:relative;width:18px;height:62px}.mec-wrap .flip-clock-divider:first-child{width:0}.mec-wrap .flip-clock-dot{display:none;background:#323434;width:10px;height:10px;position:absolute;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);left:5px}.mec-wrap .flip-clock-divider .flip-clock-label{position:absolute;bottom:-1.5em;right:-71px;color:#101010;font-weight:700;text-shadow:none;text-transform:uppercase}.mec-wrap .blox.dark .flip-clock-divider .flip-clock-label{color:#8a8a8a}.mec-wrap .flip-clock-divider.seconds .flip-clock-label{right:-82px}.mec-wrap .flip-clock-dot.top{top:30px}.mec-wrap .flip-clock-dot.bottom{bottom:30px}@-webkit-keyframes asd{0%{z-index:2}20%{z-index:4}100%{z-index:4}}@-moz-keyframes asd{0%{z-index:2}20%{z-index:4}100%{z-index:4}}@-o-keyframes asd{0%{z-index:2}20%{z-index:4}100%{z-index:4}}@keyframes asd{0%{z-index:2}20%{z-index:4}100%{z-index:4}}.flip-clock-wrapper ul.play li.flip-clock-active .down{z-index:2;-webkit-animation:turn .5s .5s linear both;-moz-animation:turn .5s .5s linear both;animation:turn .5s .5s linear both}@-webkit-keyframes turn{0%{-webkit-transform:rotatex(90deg)}100%{-webkit-transform:rotatex(0)}}@-moz-keyframes turn{0%{-moz-transform:rotatex(90deg)}100%{-moz-transform:rotatex(0)}}@-o-keyframes turn{0%{-o-transform:rotatex(90deg)}100%{-o-transform:rotatex(0)}}@keyframes turn{0%{transform:rotatex(90deg)}100%{transform:rotatex(0)}}.flip-clock-wrapper ul.play li.flip-clock-before .up{z-index:2;-webkit-animation:turn2 .5s linear both;-moz-animation:turn2 .5s linear both;animation:turn2 .5s linear both}@-webkit-keyframes turn2{0%{-webkit-transform:rotatex(0)}100%{-webkit-transform:rotatex(-90deg)}}@-moz-keyframes turn2{0%{-moz-transform:rotatex(0)}100%{-moz-transform:rotatex(-90deg)}}@-o-keyframes turn2{0%{-o-transform:rotatex(0)}100%{-o-transform:rotatex(-90deg)}}@keyframes turn2{0%{transform:rotatex(0)}100%{transform:rotatex(-90deg)}}.flip-clock-wrapper ul li.flip-clock-active{z-index:3}.flip-clock-wrapper ul.play li.flip-clock-before .up .shadow{background:-moz-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,.1)),color-stop(100%,rgba(64,64,64,.68)));background:linear,top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%;background:-o-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:-ms-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:linear,to bottom,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%;-webkit-animation:show .5s linear both;-moz-animation:show .5s linear both;animation:show .5s linear both}.flip-clock-wrapper ul.play li.flip-clock-active .up .shadow{background:-moz-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,.1)),color-stop(100%,rgba(64,64,64,.68)));background:linear,top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%;background:-o-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:-ms-linear-gradient(top,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%);background:linear,to bottom,rgba(0,0,0,.1) 0,rgba(64,64,64,.68) 100%;-webkit-animation:hide .5s .3s linear both;-moz-animation:hide .5s .3s linear both;animation:hide .5s .3s linear both}.flip-clock-wrapper ul.play li.flip-clock-before .down .shadow{background:-moz-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(64,64,64,.68)),color-stop(100%,rgba(0,0,0,.1)));background:linear,top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%;background:-o-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:-ms-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:linear,to bottom,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%;-webkit-animation:show .5s linear both;-moz-animation:show .5s linear both;animation:show .5s linear both}.flip-clock-wrapper ul.play li.flip-clock-active .down .shadow{background:-moz-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(64,64,64,.68)),color-stop(100%,rgba(0,0,0,.1)));background:linear,top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%;background:-o-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:-ms-linear-gradient(top,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%);background:linear,to bottom,rgba(64,64,64,.68) 0,rgba(0,0,0,.1) 100%;-webkit-animation:hide .5s .3s linear both;-moz-animation:hide .5s .3s linear both;animation:hide .5s .2s linear both}@-webkit-keyframes show{0%{opacity:0}100%{opacity:1}}@-moz-keyframes show{0%{opacity:0}100%{opacity:1}}@-o-keyframes show{0%{opacity:0}100%{opacity:1}}@keyframes show{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes hide{0%{opacity:1}100%{opacity:0}}@-moz-keyframes hide{0%{opacity:1}100%{opacity:0}}@-o-keyframes hide{0%{opacity:1}100%{opacity:0}}@keyframes hide{0%{opacity:1}100%{opacity:0}}@font-face{font-family:simple-line-icons;src:url(../fonts/Simple-Line-Icons.eot?v=2.3.1);src:url(../fonts/Simple-Line-Icons.eot?v=2.3.1#iefix) format('embedded-opentype'),url(../fonts/Simple-Line-Icons.woff2?v=2.3.1) format('woff2'),url(../fonts/Simple-Line-Icons.woff?v=2.3.1) format('woff'),url(../fonts/Simple-Line-Icons.ttf?v=2.3.1) format('truetype'),url(../fonts/Simple-Line-Icons.svg?v=2.3.1#simple-line-icons) format('svg');font-weight:400;font-style:normal}[class*=mec-sl-]{font-family:simple-line-icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mec-sl-facebook:before{content:"\e00b"}.mec-sl-twitter:before{content:"\e009"}.mec-sl-google-plus:before{content:"\e60d"}.mec-sl-angle-left:before{content:"\e605"}.mec-sl-angle-right:before{content:"\e606"}.mec-sl-calendar:before{content:"\e075"}.mec-sl-clock-o:before{content:"\e081"}.mec-sl-home:before{content:"\e069"}.mec-sl-phone:before{content:"\e600"}.mec-sl-envelope:before{content:"\e086"}.mec-sl-sitemap:before{content:"\e037"}.mec-sl-map-marker:before{content:"\e096"}.mec-sl-floder:before{content:"\e089"}.mec-sl-wallet:before{content:"\e02a"}.mec-color,.mec-color-before :before,.mec-color-hover:hover,.mec-wrap .mec-color,.mec-wrap .mec-color-before :before,.mec-wrap .mec-color-hover:hover{color:#40d9f1}.mec-bg-color,.mec-bg-color-hover:hover,.mec-wrap .mec-bg-color,.mec-wrap .mec-bg-color-hover:hover{background-color:#40d9f1}.mec-border-color,.mec-border-color-hover:hover,.mec-wrap .mec-border-color,.mec-wrap .mec-border-color-hover:hover{border-color:#40d9f1}.mec-toggle-month-divider.mec-skin-list-events-container{border:1px solid #e8e8e8;margin-bottom:30px;background:#f8f8f8;box-shadow:0 2px 18px -1px rgba(0,0,0,.1);border-radius:2px}.mec-toggle-month-divider .mec-month-divider{margin:0;text-align:left;background:#fff;position:relative;cursor:pointer;border-top:1px solid #e8e8e8}.mec-toggle-month-divider .mec-month-divider span{padding:20px;border-bottom:1px solid #e8e8e8}.mec-toggle-month-divider .mec-month-divider i{position:absolute;right:20px;top:24px;font-size:20px;cursor:pointer}.mec-toggle-month-divider .mec-month-divider span:before{display:none}.mec-toggle-month-divider .mec-month-divider+article{margin-top:20px}.mec-toggle-month-divider .mec-wrap .mec-month-divider:first-of-type{border-top:none}.mec-toggle-month-divider .mec-event-list-accordion .mec-month-divider:not(:first-of-type)~article{display:none}.mec-skin-list-events-container:not(.mec-toggle-month-divider) .mec-month-divider i{display:none}.mec-toogle-inner-month-divider .mec-toggle-item-col .mec-event-month{display:inline-block;padding-top:0}.mec-toogle-inner-month-divider .mec-toggle-item-col .mec-event-date{font-size:14px;line-height:14px;float:none;display:inline-block;margin-right:0;font-weight:700}.mec-events-toggle .mec-toogle-inner-month-divider.mec-toggle-item-inner{padding:20px 60px 30px 15px}.mec-toogle-inner-month-divider .mec-toggle-month-inner-image{float:left;clear:right;width:100px;margin-right:20px;margin-left:10px}.mec-toogle-inner-month-divider .mec-toggle-item-col .mec-event-detail{margin-top:-6px}.mec-toogle-inner-month-divider .mec-toggle-item-col{float:none;width:100%;margin-top:10px;display:block;border:none}.mec-events-toggle .mec-toogle-inner-month-divider .mec-toggle-title{font-size:19px;display:block;padding-top:10px}@media only screen and (max-width:768px){.mec-events-toggle .mec-toogle-inner-month-divider .mec-toggle-title{font-size:14px;padding-top:0}.mec-toogle-inner-month-divider .mec-toggle-item-col{margin-top:0}.mec-toogle-inner-month-divider .mec-toggle-month-inner-image{width:70px}}.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-canceled:before,.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-featured:before{z-index:1;position:absolute;top:25px;right:-37px;font-size:11px;letter-spacing:1px;text-transform:uppercase;background:#04de78;padding:2px 40px;color:#fff;-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transition:.5s cubic-bezier(.25,.5,.06,.85);transition:.5s cubic-bezier(.25,.5,.06,.85);content:attr(data-style)}.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-canceled,.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-featured{overflow:hidden;position:relative}.mec-wrap article:not([class^=mec-event-countdown]):not([class^=mec-event-cover-]).mec-label-canceled:before{background:#de0404}.mec-daily-view-date-events article:before,ul.mec-weekly-view-dates-events article:before{padding:7px 40px!important;top:27px!important}.mec-event-grid-classic article .mec-fc-style,.mec-event-grid-minimal article .mec-fc-style,.mec-event-grid-simple article .mec-fc-style,.mec-timetable-wrap article .mec-fc-style,.mec-wrap .mec-event-list-accordion article .mec-fc-style,.mec-wrap .mec-event-list-modern article .mec-fc-style,.mec-wrap .mec-events-agenda .mec-agenda-event .mec-fc-style,.mec-wrap article.mec-event-cover-classic .mec-fc-style,.mec-wrap article.mec-event-cover-clean .mec-fc-style,.mec-wrap article.mec-event-cover-modern .mec-fc-style,.mec-wrap article[class^=mec-event-countdown-] .mec-fc-style{font-size:9px;letter-spacing:.5px;text-transform:uppercase;background:#04de78;padding:2px 7px;color:#fff;position:relative;margin-left:5px;border-radius:2px}.mec-wrap .mec-events-agenda .mec-agenda-event.mec-label-canceled .mec-fc-style,.mec-wrap article.mec-event-cover-modern.mec-label-canceled .mec-fc-style{background:#de0404}.mec-event-grid-minimal article .mec-fc-style:before,.mec-event-grid-simple article .mec-fc-style:before,.mec-timetable-wrap article .mec-fc-style:before,.mec-wrap .mec-event-list-accordion article .mec-fc-style:before,.mec-wrap .mec-event-list-modern article .mec-fc-style:before,.mec-wrap .mec-events-agenda .mec-agenda-event .mec-fc-style:before,.mec-wrap article.mec-event-cover-classic .mec-fc-style:before,.mec-wrap article.mec-event-cover-clean .mec-fc-style:before,.mec-wrap article[class^=mec-event-countdown-] .mec-fc-style:before{width:0;height:0;border-top:4px solid transparent!important;border-right:5px solid;border-bottom:4px solid transparent;margin:0;top:50%;left:-4px;transform:translateY(-4.5px);position:absolute;content:'';color:#04de78}.mec-wrap .mec-events-agenda .mec-agenda-event.mec-label-canceled .mec-fc-style:before{color:#de0404}.mec-event-grid-classic article.mec-label-canceled:before,.mec-event-grid-classic article.mec-label-featured:before,.mec-event-grid-minimal article.mec-label-canceled:before,.mec-event-grid-minimal article.mec-label-featured:before,.mec-event-grid-simple article.mec-label-canceled:before,.mec-event-grid-simple article.mec-label-featured:before,.mec-timetable-wrap article.mec-label-canceled:before,.mec-timetable-wrap article.mec-label-featured:before,.mec-wrap .mec-event-list-accordion article.mec-label-canceled:before,.mec-wrap .mec-event-list-accordion article.mec-label-featured:before,.mec-wrap .mec-event-list-modern article.mec-label-canceled:before,.mec-wrap .mec-event-list-modern article.mec-label-featured:before{display:none}.mec-wrap .mec-event-list-accordion article .mec-fc-style,.mec-wrap .mec-event-list-modern article .mec-fc-style,.mec-wrap article.mec-event-cover-classic .mec-fc-style,.mec-wrap article.mec-event-cover-clean .mec-fc-style,.mec-wrap article[class^=mec-event-countdown-] .mec-fc-style{top:-3px;font-size:11px;margin-left:10px}.mec-event-grid-classic article.mec-label-canceled .mec-fc-style,.mec-event-grid-minimal article.mec-label-canceled .mec-fc-style,.mec-event-grid-simple article.mec-label-canceled .mec-fc-style,.mec-timetable-wrap article.mec-label-canceled .mec-fc-style,.mec-wrap .mec-event-list-accordion article.mec-label-canceled .mec-fc-style,.mec-wrap .mec-event-list-modern article.mec-label-canceled .mec-fc-style,.mec-wrap article.mec-event-cover-classic.mec-label-canceled .mec-fc-style,.mec-wrap article.mec-event-cover-clean.mec-label-canceled .mec-fc-style,.mec-wrap article[class^=mec-event-countdown-].mec-label-canceled .mec-fc-style{background:#de0404}.mec-event-grid-classic article.mec-label-canceled .mec-fc-style:before,.mec-event-grid-minimal article.mec-label-canceled .mec-fc-style:before,.mec-event-grid-simple article.mec-label-canceled .mec-fc-style:before,.mec-timetable-wrap article.mec-label-canceled .mec-fc-style:before,.mec-wrap .mec-event-list-accordion article.mec-label-canceled .mec-fc-style:before,.mec-wrap .mec-event-list-modern article.mec-label-canceled .mec-fc-style:before,.mec-wrap article.mec-event-cover-classic.mec-label-canceled .mec-fc-style:before,.mec-wrap article.mec-event-cover-clean.mec-label-canceled .mec-fc-style:before,.mec-wrap article[class^=mec-event-countdown-].mec-label-canceled .mec-fc-style:before{color:#de0404}.mec-wrap .mec-slider-t5 article:not([class^=mec-event-countdown]).mec-label-canceled:before,.mec-wrap .mec-slider-t5 article:not([class^=mec-event-countdown]).mec-label-featured:before{-ms-transform:none;-webkit-transform:none;transform:none;-webkit-transition:none;transition:none;top:271px;right:0}.mec-timetable-wrap article .mec-fc-style{top:-2px;font-size:10px}.mec-wrap article.mec-event-cover-modern .mec-fc-style{padding:5px 9px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-bottom:24px;display:inline-block;border-radius:2px}.mec-skin-grid-events-container .mec-wrap .mec-event-grid-clean .mec-event-article:before{-ms-transform:none;-webkit-transform:none;transform:none!important;-webkit-transition:none;transition:none;top:22px!important;right:22px!important;padding:0 10px!important}.mec-event-grid-minimal article .mec-fc-style,.mec-event-grid-simple article .mec-fc-style{top:-4px;font-size:10px;margin-left:10px}.mec-event-grid-classic article .mec-fc-style{padding:5px 20px;font-size:12px;margin-top:8px;display:inline-block}.mec-hourly-schedule-speaker-info{background:#fff;padding:30px;border:1px solid #e6e6e6;max-width:740px;width:740px;margin-left:-110px}.mec-hourly-schedule-speaker-thumbnail{float:left;max-width:30%;width:30%}.mec-hourly-schedule-speaker-name{font-weight:700;font-size:26px;line-height:1.2;color:#333;text-transform:uppercase}.mec-hourly-schedule-speaker-details{float:left;width:69%;padding-left:25px}.mec-hourly-schedule-speaker-job-title{font-size:16px;line-height:1.3;margin-bottom:4px}.mec-hourly-schedule-speaker-description{font-size:14px;font-weight:400;color:#6d7683;line-height:1.7;text-align:left}.mec-hourly-schedule-speaker-contact-information a i{color:#6b6b6b;background:#ebebeb;line-height:29px;margin:9px 7px 9px 0;width:30px;height:30px;display:inline-block;text-align:center;transition:all .2s ease;font-size:15px;cursor:pointer}.mec-hourly-schedule-speaker-contact-information a i:hover{background:#222;color:#fff}@media only screen and (max-width:479px){.mec-hourly-schedule-speaker-thumbnail{float:none;max-width:none;margin-right:0;margin-bottom:15px;width:100%}.mec-hourly-schedule-speaker-thumbnail img{width:100%}.mec-hourly-schedule-speaker-details{padding-left:0}.mec-hourly-schedule-speaker-info{width:90%;margin:0 auto}}.mec-profile .mec-profile-bookings{border:2px solid #e6e6e6;text-align:center}.mec-profile .mec-profile-bookings tbody tr:first-child{background:#f7f7f7;font-weight:700;text-transform:capitalize}.mec-profile .mec-profile-bookings tbody tr{border-bottom:1px solid #e6e6e6;font-size:14px}.mec-profile .mec-profile-bookings tbody tr td{border:1px solid #e6e6e6;padding:10px}.mec-profile .mec-profile-bookings tbody tr td:nth-child(1){width:4%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(2){width:37%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(3){width:24%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(4){width:15%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(5){width:10%}.mec-profile .mec-profile-bookings tbody tr td:nth-child(6){width:10%}.mec-profile .mec-event-status{padding:5px 10px;color:#fff;border-radius:2px;font-size:12px;line-height:12px;letter-spacing:.4px}.mec-profile .mec-event-status.mec-book-confirmed{background:#50d477}.mec-profile .mec-event-status.mec-book-pending{background:#fcbe69}.mec-profile .mec-event-status.mec-book-rejected{background:#fe686a}.mec-profile .mec-event-date{font-size:12px;color:#888}.mec-profile .mec-booking-number-of-attendees{font-size:13px;color:#888}.mec-profile .mec-booking-number-of-attendees i,.mec-profile .mec-profile-bookings-view-invoice i{font-size:15px;color:#008aff;vertical-align:text-bottom;margin-right:4px}.mec-booking-attendees{background:#fff;padding:10px}.mec-booking-attendees{width:750px;text-align:center}.mec-booking-attendees-wrapper{border:2px solid #e6e6e6;font-size:14px}.mec-booking-attendees-head{display:table;width:100%;background:#f7f7f7;border-bottom:1px solid #e6e6e6;font-weight:700}.mec-booking-attendees-head span,.mec-booking-attendees-head-content>span{vertical-align:middle;display:table-cell;padding:7px;border-right:1px solid #e6e6e6}.mec-booking-attendees-head-content{display:table;width:100%;border-bottom:1px solid #e6e6e6}.mec-booking-attendees-wrapper .mec-booking-attendees-head-content:last-child{border:none}.mec-booking-attendees-head span:nth-child(1),.mec-booking-attendees-head-content>span:nth-child(1){width:4%}.mec-booking-attendees-head span:nth-child(2),.mec-booking-attendees-head-content>span:nth-child(2){width:20%}.mec-booking-attendees-head span:nth-child(3),.mec-booking-attendees-head-content>span:nth-child(3){width:24%}.mec-booking-attendees-head span:nth-child(4),.mec-booking-attendees-head-content>span:nth-child(4){width:26%}.mec-booking-attendees-head span:nth-child(5),.mec-booking-attendees-head-content>span:nth-child(5){width:26%}@media only screen and (max-width:759px){.mec-booking-attendees{width:470px}.mec-booking-attendees-head span,.mec-booking-attendees-head-content>span{word-break:break-all}}.mec-woo-booking-checkout{position:relative;border:none;border-radius:0;color:#fff;display:inline-block;font-size:12px;letter-spacing:1px;line-height:1.5;text-transform:uppercase;font-weight:600;text-decoration:none;cursor:pointer;margin-bottom:21px;margin-right:10px;line-height:1;padding:18px 20px 16px;background:#39c36e;-webkit-transition:all .21s ease;-moz-transition:all .21s ease;transition:all .21s ease;border-radius:0;margin-bottom:6px;min-width:170px;margin-top:5px;text-align:center}.mec-woo-booking-checkout:hover{background:#222;color:#fff}.mec-woo-booking-checkout:focus,.mec-woo-booking-checkout:visited{color:#fff}.single-mec-events .lity-container{max-width:480px;width:480px}.lity-content .mec-events-meta-group-booking{width:100%;padding:20px 50px;background:#fff}.lity-content .mec-events-meta-group-booking .mec-booking form>h4{text-transform:uppercase;font-size:15px;font-weight:700;color:#313131;border-bottom:4px solid #ebebeb;width:100%;display:block;padding-bottom:10px;position:relative;text-align:center;line-height:1.2;margin-bottom:10px}.lity-content .mec-events-meta-group-booking .mec-booking form>h4:before{padding:1px 35px;border-bottom:4px solid #40d9f1;font-size:6px;content:"";text-align:center;position:absolute;bottom:-4px;margin-left:-35px;left:50%}.lity-content .mec-events-meta-group-booking .mec-event-ticket-available,.lity-content .mec-events-meta-group-booking .mec-event-ticket-name,.lity-content .mec-events-meta-group-booking .mec-event-ticket-price,.lity-content .mec-events-meta-group-booking .mec-ticket-variation-name,.lity-content .mec-events-meta-group-booking .mec-ticket-variation-price,.lity-content .mec-events-meta-group-booking label{color:#424242;font-size:12px;font-weight:300;letter-spacing:0;margin:3px 0;clear:none;padding:5px 1em 3px 0;display:inline-block}.lity-content .mec-events-meta-group-booking .mec-event-ticket-available{margin-bottom:12px}.lity-content .mec-events-meta-group-booking select{display:block;background:#fcfcfc;min-height:42px;min-width:180px;font-size:13px;border:1px solid #e0e0e0;padding:13px 10px;width:100%;margin-bottom:20px;box-shadow:inset 0 2px 4px rgba(0,0,0,.051);clear:both;font-family:Montserrat,Helvetica,Arial,sans-serif}.lity-content .mec-events-meta-group-booking input[type=email]{color:#888;border:1px solid #e1e1e1;font-size:14px;display:block;width:100%;outline:0}.lity-content .mec-events-meta-group-booking input{margin-bottom:10px!important}.lity-content .mec-book-ticket-variation h5{color:#424242;font-size:12px;font-weight:300;letter-spacing:0;margin:0;clear:none;padding:5px 1em 3px 0;display:inline-block;text-transform:capitalize;font-family:Montserrat,Helvetica,Arial,sans-serif}.lity-content ul.mec-book-tickets-container{padding:0}.lity-content .mec-events-meta-group-booking input[type=email],.lity-content .mec-events-meta-group-booking input[type=number],.lity-conten