WP Mail SMTP by WPForms - Version 2.0.1

Version Description

  • 2020-05-07 =
  • Changed: Improved description of the "Do Not Send" plugin option.
  • Fixed: Due to Pepipost API changes we now convert new lines so they are preserved in plain text emails.
  • Fixed: Downgrade internal Guzzle dependency to 6.4 to temporarily fix compatibility issues with WordPress and Guzzle 6.5. Affects Gmail mailer.
Download this release

Release Info

Developer slaFFik
Plugin Icon 128x128 WP Mail SMTP by WPForms
Version 2.0.1
Comparing to
See all releases

Code changes from version 2.0.0 to 2.0.1

Files changed (39) hide show
  1. assets/languages/wp-mail-smtp.pot +13 -13
  2. readme.txt +6 -1
  3. src/Admin/Pages/MiscTab.php +224 -219
  4. src/Providers/PepipostAPI/Mailer.php +4 -1
  5. vendor/composer/autoload_files.php +0 -3
  6. vendor/composer/autoload_psr4.php +0 -3
  7. vendor/composer/autoload_static.php +0 -18
  8. vendor/guzzlehttp/guzzle/src/Client.php +6 -86
  9. vendor/guzzlehttp/guzzle/src/ClientInterface.php +2 -5
  10. vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php +2 -4
  11. vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +3 -3
  12. vendor/guzzlehttp/guzzle/src/Exception/RequestException.php +30 -5
  13. vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php +5 -10
  14. vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +5 -20
  15. vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php +1 -6
  16. vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php +3 -4
  17. vendor/guzzlehttp/guzzle/src/HandlerStack.php +1 -5
  18. vendor/guzzlehttp/guzzle/src/MessageFormatter.php +0 -5
  19. vendor/guzzlehttp/guzzle/src/Pool.php +1 -12
  20. vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +0 -5
  21. vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php +4 -22
  22. vendor/guzzlehttp/guzzle/src/RequestOptions.php +0 -8
  23. vendor/guzzlehttp/guzzle/src/RetryMiddleware.php +2 -15
  24. vendor/guzzlehttp/guzzle/src/TransferStats.php +6 -6
  25. vendor/guzzlehttp/guzzle/src/Utils.php +0 -67
  26. vendor/guzzlehttp/guzzle/src/functions.php +14 -2
  27. vendor/symfony/polyfill-intl-idn/Idn.php +0 -283
  28. vendor/symfony/polyfill-intl-idn/LICENSE +0 -19
  29. vendor/symfony/polyfill-intl-idn/bootstrap.php +0 -61
  30. vendor/symfony/polyfill-mbstring/LICENSE +0 -19
  31. vendor/symfony/polyfill-mbstring/Mbstring.php +0 -847
  32. vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +0 -1096
  33. vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +0 -5
  34. vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +0 -1104
  35. vendor/symfony/polyfill-mbstring/bootstrap.php +0 -64
  36. vendor/symfony/polyfill-php72/LICENSE +0 -19
  37. vendor/symfony/polyfill-php72/Php72.php +0 -216
  38. vendor/symfony/polyfill-php72/bootstrap.php +0 -36
  39. wp_mail_smtp.php +2 -2
assets/languages/wp-mail-smtp.pot CHANGED
@@ -1,13 +1,13 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: WP Mail SMTP 2.0.0\n"
4
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-mail-smtp\n"
5
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
6
  "Language-Team: LANGUAGE <LL@li.org>\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
- "POT-Creation-Date: 2020-04-27T12:51:41+03:00\n"
11
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
  "X-Generator: WP-CLI 2.4.0\n"
13
  "X-Domain: wp-mail-smtp\n"
@@ -465,45 +465,45 @@ msgstr ""
465
  msgid "The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation."
466
  msgstr ""
467
 
468
- #. translators: %1$s - constant to use; %2$s - file to put that constant in.
469
  #: src/Admin/Pages/MiscTab.php:92
470
- msgid "If you want to disable using a constant, put %1$s in your %2$s file."
471
  msgstr ""
472
 
473
- #: src/Admin/Pages/MiscTab.php:106
474
  msgid "Hide Announcements"
475
  msgstr ""
476
 
477
- #: src/Admin/Pages/MiscTab.php:115
478
  msgid "Check this if you would like to hide plugin announcements and update details."
479
  msgstr ""
480
 
481
- #: src/Admin/Pages/MiscTab.php:125
482
  msgid "Hide Email Delivery Errors"
483
  msgstr ""
484
 
485
- #: src/Admin/Pages/MiscTab.php:141
486
  msgid "Check this if you would like to hide warnings alerting of email delivery errors."
487
  msgstr ""
488
 
489
  #. translators: %s - filter that was used to disabled.
490
- #: src/Admin/Pages/MiscTab.php:148
491
  msgid "Email Delivery Errors were disabled using a %s filter."
492
  msgstr ""
493
 
494
- #: src/Admin/Pages/MiscTab.php:157
495
  msgid "<strong>This is not recommended</strong> and should only be done for staging or development sites."
496
  msgstr ""
497
 
498
- #: src/Admin/Pages/MiscTab.php:172
499
  msgid "Uninstall WP Mail SMTP"
500
  msgstr ""
501
 
502
- #: src/Admin/Pages/MiscTab.php:180
503
  msgid "Check this if you would like to remove ALL WP Mail SMTP data upon plugin deletion. All settings will be unrecoverable."
504
  msgstr ""
505
 
506
- #: src/Admin/Pages/MiscTab.php:215
507
  #: src/Admin/Pages/SettingsTab.php:540
508
  msgid "Settings were successfully saved."
509
  msgstr ""
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: WP Mail SMTP 2.0.1\n"
4
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-mail-smtp\n"
5
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
6
  "Language-Team: LANGUAGE <LL@li.org>\n"
7
  "MIME-Version: 1.0\n"
8
  "Content-Type: text/plain; charset=UTF-8\n"
9
  "Content-Transfer-Encoding: 8bit\n"
10
+ "POT-Creation-Date: 2020-05-07T15:56:11+03:00\n"
11
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
  "X-Generator: WP-CLI 2.4.0\n"
13
  "X-Domain: wp-mail-smtp\n"
465
  msgid "The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation."
466
  msgstr ""
467
 
468
+ #. translators: %s - file to put that constant in.
469
  #: src/Admin/Pages/MiscTab.php:92
470
+ msgid "If you want to enable this option using constants, put the lines below to your %s file:"
471
  msgstr ""
472
 
473
+ #: src/Admin/Pages/MiscTab.php:111
474
  msgid "Hide Announcements"
475
  msgstr ""
476
 
477
+ #: src/Admin/Pages/MiscTab.php:120
478
  msgid "Check this if you would like to hide plugin announcements and update details."
479
  msgstr ""
480
 
481
+ #: src/Admin/Pages/MiscTab.php:130
482
  msgid "Hide Email Delivery Errors"
483
  msgstr ""
484
 
485
+ #: src/Admin/Pages/MiscTab.php:146
486
  msgid "Check this if you would like to hide warnings alerting of email delivery errors."
487
  msgstr ""
488
 
489
  #. translators: %s - filter that was used to disabled.
490
+ #: src/Admin/Pages/MiscTab.php:153
491
  msgid "Email Delivery Errors were disabled using a %s filter."
492
  msgstr ""
493
 
494
+ #: src/Admin/Pages/MiscTab.php:162
495
  msgid "<strong>This is not recommended</strong> and should only be done for staging or development sites."
496
  msgstr ""
497
 
498
+ #: src/Admin/Pages/MiscTab.php:177
499
  msgid "Uninstall WP Mail SMTP"
500
  msgstr ""
501
 
502
+ #: src/Admin/Pages/MiscTab.php:185
503
  msgid "Check this if you would like to remove ALL WP Mail SMTP data upon plugin deletion. All settings will be unrecoverable."
504
  msgstr ""
505
 
506
+ #: src/Admin/Pages/MiscTab.php:220
507
  #: src/Admin/Pages/SettingsTab.php:540
508
  msgid "Settings were successfully saved."
509
  msgstr ""
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: wpforms, jaredatch, smub, slaFFik
3
  Tags: smtp, wp mail smtp, wordpress smtp, gmail smtp, sendgrid smtp, mailgun smtp, mail, mailer, phpmailer, wp_mail, email, mailgun, sengrid, gmail, pepipost, sendinblue, wp smtp
4
  Requires at least: 4.9
5
  Tested up to: 5.4
6
- Stable tag: 2.0.0
7
  Requires PHP: 5.5.0
8
 
9
  The most popular WordPress SMTP and PHP Mailer plugin. Trusted by over 1 million sites.
@@ -229,6 +229,11 @@ By all means please contact us to discuss features or options you'd like to see
229
 
230
  == Changelog ==
231
 
 
 
 
 
 
232
  = 2.0.0 - 2020-04-27 =
233
  * IMPORTANT: Support for PHP 5.2-5.4 has been discontinued. If you are running one of those versions, you MUST upgrade PHP before installing or upgrading to WP Mail SMTP v2.0. Failure to do that will disable WP Mail SMTP functionality.
234
  * Added: new mailer - SMTP.com integration.
3
  Tags: smtp, wp mail smtp, wordpress smtp, gmail smtp, sendgrid smtp, mailgun smtp, mail, mailer, phpmailer, wp_mail, email, mailgun, sengrid, gmail, pepipost, sendinblue, wp smtp
4
  Requires at least: 4.9
5
  Tested up to: 5.4
6
+ Stable tag: 2.0.1
7
  Requires PHP: 5.5.0
8
 
9
  The most popular WordPress SMTP and PHP Mailer plugin. Trusted by over 1 million sites.
229
 
230
  == Changelog ==
231
 
232
+ = 2.0.1 - 2020-05-07 =
233
+ * Changed: Improved description of the "Do Not Send" plugin option.
234
+ * Fixed: Due to Pepipost API changes we now convert new lines so they are preserved in plain text emails.
235
+ * Fixed: Downgrade internal Guzzle dependency to 6.4 to temporarily fix compatibility issues with WordPress and Guzzle 6.5. Affects Gmail mailer.
236
+
237
  = 2.0.0 - 2020-04-27 =
238
  * IMPORTANT: Support for PHP 5.2-5.4 has been discontinued. If you are running one of those versions, you MUST upgrade PHP before installing or upgrading to WP Mail SMTP v2.0. Failure to do that will disable WP Mail SMTP functionality.
239
  * Added: new mailer - SMTP.com integration.
src/Admin/Pages/MiscTab.php CHANGED
@@ -1,219 +1,224 @@
1
- <?php
2
-
3
- namespace WPMailSMTP\Admin\Pages;
4
-
5
- use WPMailSMTP\Admin\PageAbstract;
6
- use WPMailSMTP\Options;
7
- use WPMailSMTP\WP;
8
-
9
- /**
10
- * Class MiscTab is part of Area, displays different plugin-related settings of the plugin (not related to emails).
11
- *
12
- * @since 1.0.0
13
- */
14
- class MiscTab extends PageAbstract {
15
- /**
16
- * @var string Slug of a tab.
17
- */
18
- protected $slug = 'misc';
19
-
20
- /**
21
- * @inheritdoc
22
- */
23
- public function get_label() {
24
- return esc_html__( 'Misc', 'wp-mail-smtp' );
25
- }
26
-
27
- /**
28
- * @inheritdoc
29
- */
30
- public function get_title() {
31
- return $this->get_label();
32
- }
33
-
34
- /**
35
- * @inheritdoc
36
- */
37
- public function display() {
38
-
39
- $options = new Options();
40
- ?>
41
-
42
- <form method="POST" action="">
43
- <?php $this->wp_nonce_field(); ?>
44
-
45
- <!-- Section Title -->
46
- <div class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-content wp-mail-smtp-clear section-heading no-desc" id="wp-mail-smtp-setting-row-email-heading">
47
- <div class="wp-mail-smtp-setting-field">
48
- <h2><?php echo $this->get_title(); ?></h2>
49
- </div>
50
- </div>
51
-
52
- <!-- Do not send -->
53
- <div id="wp-mail-smtp-setting-row-do_not_send" class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-checkbox wp-mail-smtp-clear">
54
- <div class="wp-mail-smtp-setting-label">
55
- <label for="wp-mail-smtp-setting-do_not_send">
56
- <?php esc_html_e( 'Do Not Send', 'wp-mail-smtp' ); ?>
57
- </label>
58
- </div>
59
- <div class="wp-mail-smtp-setting-field">
60
- <input name="wp-mail-smtp[general][do_not_send]" type="checkbox" value="true" id="wp-mail-smtp-setting-do_not_send"
61
- <?php echo $options->is_const_defined( 'general', 'do_not_send' ) ? 'disabled' : ''; ?>
62
- <?php checked( true, $options->get( 'general', 'do_not_send' ) ); ?>
63
- >
64
- <label for="wp-mail-smtp-setting-do_not_send">
65
- <?php esc_html_e( 'Check this if you would like to stop sending all emails.', 'wp-mail-smtp' ); ?>
66
- </label>
67
- <p class="desc">
68
- <?php
69
- printf(
70
- wp_kses(
71
- __( 'Some plugins, like BuddyPress and Events Manager, are using their own email delivery solutions. By default, this option does not block their emails, as those plugins do not use default <code>wp_mail()</code> function to send emails.', 'wp-mail-smtp' ),
72
- array(
73
- 'code' => array(),
74
- )
75
- )
76
- );
77
- ?>
78
- <br>
79
- <?php esc_html_e( 'You will need to consult with their documentation to switch them to use default WordPress email delivery.', 'wp-mail-smtp' ); ?>
80
- <br>
81
- <?php esc_html_e( 'Test emails are allowed to be sent, regardless of this option.', 'wp-mail-smtp' ); ?>
82
- <br>
83
- <?php
84
- if ( $options->is_const_defined( 'general', 'do_not_send' ) ) {
85
- printf( /* translators: %1$s - constant that was used; %2$s - file where it was used. */
86
- esc_html__( 'The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation.', 'wp-mail-smtp' ),
87
- '<code>WPMS_DO_NOT_SEND</code>',
88
- '<code>wp-config.php</code>'
89
- );
90
- } else {
91
- printf( /* translators: %1$s - constant to use; %2$s - file to put that constant in. */
92
- esc_html__( 'If you want to disable using a constant, put %1$s in your %2$s file.', 'wp-mail-smtp' ),
93
- '<code>define( \'WPMS_DO_NOT_SEND\', true );</code>',
94
- '<code>wp-config.php</code>'
95
- );
96
- }
97
- ?>
98
- </p>
99
- </div>
100
- </div>
101
-
102
- <!-- Hide Announcements -->
103
- <div id="wp-mail-smtp-setting-row-am_notifications_hidden" class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-checkbox wp-mail-smtp-clear">
104
- <div class="wp-mail-smtp-setting-label">
105
- <label for="wp-mail-smtp-setting-am_notifications_hidden">
106
- <?php esc_html_e( 'Hide Announcements', 'wp-mail-smtp' ); ?>
107
- </label>
108
- </div>
109
- <div class="wp-mail-smtp-setting-field">
110
- <input name="wp-mail-smtp[general][am_notifications_hidden]" type="checkbox"
111
- value="true" <?php checked( true, $options->get( 'general', 'am_notifications_hidden' ) ); ?>
112
- id="wp-mail-smtp-setting-am_notifications_hidden"
113
- >
114
- <label for="wp-mail-smtp-setting-am_notifications_hidden">
115
- <?php esc_html_e( 'Check this if you would like to hide plugin announcements and update details.', 'wp-mail-smtp' ); ?>
116
- </label>
117
- </div>
118
- </div>
119
-
120
- <!-- Hide Email Delivery Errors -->
121
- <div id="wp-mail-smtp-setting-row-email_delivery_errors_hidden"
122
- class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-checkbox wp-mail-smtp-clear">
123
- <div class="wp-mail-smtp-setting-label">
124
- <label for="wp-mail-smtp-setting-email_delivery_errors_hidden">
125
- <?php esc_html_e( 'Hide Email Delivery Errors', 'wp-mail-smtp' ); ?>
126
- </label>
127
- </div>
128
- <div class="wp-mail-smtp-setting-field">
129
- <?php
130
- $is_hard_disabled = has_filter( 'wp_mail_smtp_admin_is_error_delivery_notice_enabled' ) && ! wp_mail_smtp()->get_admin()->is_error_delivery_notice_enabled();
131
- ?>
132
- <?php if ( $is_hard_disabled ) : ?>
133
- <input type="checkbox" disabled checked id="wp-mail-smtp-setting-email_delivery_errors_hidden">
134
- <?php else : ?>
135
- <input name="wp-mail-smtp[general][email_delivery_errors_hidden]" type="checkbox" value="true"
136
- <?php checked( true, $options->get( 'general', 'email_delivery_errors_hidden' ) ); ?>
137
- id="wp-mail-smtp-setting-email_delivery_errors_hidden">
138
- <?php endif; ?>
139
-
140
- <label for="wp-mail-smtp-setting-email_delivery_errors_hidden">
141
- <?php esc_html_e( 'Check this if you would like to hide warnings alerting of email delivery errors.', 'wp-mail-smtp' ); ?>
142
- </label>
143
-
144
- <?php if ( $is_hard_disabled ) : ?>
145
- <p class="desc">
146
- <?php
147
- printf( /* translators: %s - filter that was used to disabled. */
148
- esc_html__( 'Email Delivery Errors were disabled using a %s filter.', 'wp-mail-smtp' ),
149
- '<code>wp_mail_smtp_admin_is_error_delivery_notice_enabled</code>'
150
- );
151
- ?>
152
- </p>
153
- <?php else : ?>
154
- <p class="desc">
155
- <?php
156
- echo wp_kses(
157
- __( '<strong>This is not recommended</strong> and should only be done for staging or development sites.', 'wp-mail-smtp' ),
158
- array(
159
- 'strong' => true,
160
- )
161
- );
162
- ?>
163
- </p>
164
- <?php endif; ?>
165
- </div>
166
- </div>
167
-
168
- <!-- Uninstall -->
169
- <div id="wp-mail-smtp-setting-row-uninstall" class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-checkbox wp-mail-smtp-clear">
170
- <div class="wp-mail-smtp-setting-label">
171
- <label for="wp-mail-smtp-setting-uninstall">
172
- <?php esc_html_e( 'Uninstall WP Mail SMTP', 'wp-mail-smtp' ); ?>
173
- </label>
174
- </div>
175
- <div class="wp-mail-smtp-setting-field">
176
- <input name="wp-mail-smtp[general][uninstall]" type="checkbox"
177
- value="true" <?php checked( true, $options->get( 'general', 'uninstall' ) ); ?>
178
- id="wp-mail-smtp-setting-uninstall">
179
- <label for="wp-mail-smtp-setting-uninstall">
180
- <?php esc_html_e( 'Check this if you would like to remove ALL WP Mail SMTP data upon plugin deletion. All settings will be unrecoverable.', 'wp-mail-smtp' ); ?>
181
- </label>
182
- </div>
183
- </div>
184
-
185
- <?php $this->display_save_btn(); ?>
186
-
187
- </form>
188
-
189
- <?php
190
- }
191
-
192
- /**
193
- * @inheritdoc
194
- */
195
- public function process_post( $data ) {
196
-
197
- $this->check_admin_referer();
198
-
199
- $options = new Options();
200
-
201
- // Unchecked checkboxes doesn't exist in $_POST, so we need to ensure we actually have them in data to save.
202
- if ( empty( $data['general']['am_notifications_hidden'] ) ) {
203
- $data['general']['am_notifications_hidden'] = false;
204
- }
205
- if ( empty( $data['general']['uninstall'] ) ) {
206
- $data['general']['uninstall'] = false;
207
- }
208
-
209
- $to_save = array_merge( $options->get_all(), $data );
210
-
211
- // All the sanitization is done there.
212
- $options->set( $to_save );
213
-
214
- WP::add_admin_notice(
215
- esc_html__( 'Settings were successfully saved.', 'wp-mail-smtp' ),
216
- WP::ADMIN_NOTICE_SUCCESS
217
- );
218
- }
219
- }
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPMailSMTP\Admin\Pages;
4
+
5
+ use WPMailSMTP\Admin\PageAbstract;
6
+ use WPMailSMTP\Options;
7
+ use WPMailSMTP\WP;
8
+
9
+ /**
10
+ * Class MiscTab is part of Area, displays different plugin-related settings of the plugin (not related to emails).
11
+ *
12
+ * @since 1.0.0
13
+ */
14
+ class MiscTab extends PageAbstract {
15
+ /**
16
+ * @var string Slug of a tab.
17
+ */
18
+ protected $slug = 'misc';
19
+
20
+ /**
21
+ * @inheritdoc
22
+ */
23
+ public function get_label() {
24
+ return esc_html__( 'Misc', 'wp-mail-smtp' );
25
+ }
26
+
27
+ /**
28
+ * @inheritdoc
29
+ */
30
+ public function get_title() {
31
+ return $this->get_label();
32
+ }
33
+
34
+ /**
35
+ * @inheritdoc
36
+ */
37
+ public function display() {
38
+
39
+ $options = new Options();
40
+ ?>
41
+
42
+ <form method="POST" action="">
43
+ <?php $this->wp_nonce_field(); ?>
44
+
45
+ <!-- Section Title -->
46
+ <div class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-content wp-mail-smtp-clear section-heading no-desc" id="wp-mail-smtp-setting-row-email-heading">
47
+ <div class="wp-mail-smtp-setting-field">
48
+ <h2><?php echo $this->get_title(); ?></h2>
49
+ </div>
50
+ </div>
51
+
52
+ <!-- Do not send -->
53
+ <div id="wp-mail-smtp-setting-row-do_not_send" class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-checkbox wp-mail-smtp-clear">
54
+ <div class="wp-mail-smtp-setting-label">
55
+ <label for="wp-mail-smtp-setting-do_not_send">
56
+ <?php esc_html_e( 'Do Not Send', 'wp-mail-smtp' ); ?>
57
+ </label>
58
+ </div>
59
+ <div class="wp-mail-smtp-setting-field">
60
+ <input name="wp-mail-smtp[general][do_not_send]" type="checkbox" value="true" id="wp-mail-smtp-setting-do_not_send"
61
+ <?php echo $options->is_const_defined( 'general', 'do_not_send' ) ? 'disabled' : ''; ?>
62
+ <?php checked( true, $options->get( 'general', 'do_not_send' ) ); ?>
63
+ >
64
+ <label for="wp-mail-smtp-setting-do_not_send">
65
+ <?php esc_html_e( 'Check this if you would like to stop sending all emails.', 'wp-mail-smtp' ); ?>
66
+ </label>
67
+ <p class="desc">
68
+ <?php
69
+ printf(
70
+ wp_kses(
71
+ __( 'Some plugins, like BuddyPress and Events Manager, are using their own email delivery solutions. By default, this option does not block their emails, as those plugins do not use default <code>wp_mail()</code> function to send emails.', 'wp-mail-smtp' ),
72
+ array(
73
+ 'code' => array(),
74
+ )
75
+ )
76
+ );
77
+ ?>
78
+ <br>
79
+ <?php esc_html_e( 'You will need to consult with their documentation to switch them to use default WordPress email delivery.', 'wp-mail-smtp' ); ?>
80
+ <br>
81
+ <?php esc_html_e( 'Test emails are allowed to be sent, regardless of this option.', 'wp-mail-smtp' ); ?>
82
+ <br>
83
+ <?php
84
+ if ( $options->is_const_defined( 'general', 'do_not_send' ) ) {
85
+ printf( /* translators: %1$s - constant that was used; %2$s - file where it was used. */
86
+ esc_html__( 'The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation.', 'wp-mail-smtp' ),
87
+ '<code>WPMS_DO_NOT_SEND</code>',
88
+ '<code>wp-config.php</code>'
89
+ );
90
+ } else {
91
+ printf( /* translators: %s - file to put that constant in. */
92
+ esc_html__( 'If you want to enable this option using constants, put the lines below to your %s file:', 'wp-mail-smtp' ),
93
+ '<code>wp-config.php</code>'
94
+ );
95
+ }
96
+ ?>
97
+ </p>
98
+ <?php if ( ! $options->is_const_defined( 'general', 'do_not_send' ) ) : ?>
99
+ <pre>
100
+ define( 'WPMS_ON', true );
101
+ define( 'WPMS_DO_NOT_SEND', true );
102
+ </pre>
103
+ <?php endif; ?>
104
+ </div>
105
+ </div>
106
+
107
+ <!-- Hide Announcements -->
108
+ <div id="wp-mail-smtp-setting-row-am_notifications_hidden" class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-checkbox wp-mail-smtp-clear">
109
+ <div class="wp-mail-smtp-setting-label">
110
+ <label for="wp-mail-smtp-setting-am_notifications_hidden">
111
+ <?php esc_html_e( 'Hide Announcements', 'wp-mail-smtp' ); ?>
112
+ </label>
113
+ </div>
114
+ <div class="wp-mail-smtp-setting-field">
115
+ <input name="wp-mail-smtp[general][am_notifications_hidden]" type="checkbox"
116
+ value="true" <?php checked( true, $options->get( 'general', 'am_notifications_hidden' ) ); ?>
117
+ id="wp-mail-smtp-setting-am_notifications_hidden"
118
+ >
119
+ <label for="wp-mail-smtp-setting-am_notifications_hidden">
120
+ <?php esc_html_e( 'Check this if you would like to hide plugin announcements and update details.', 'wp-mail-smtp' ); ?>
121
+ </label>
122
+ </div>
123
+ </div>
124
+
125
+ <!-- Hide Email Delivery Errors -->
126
+ <div id="wp-mail-smtp-setting-row-email_delivery_errors_hidden"
127
+ class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-checkbox wp-mail-smtp-clear">
128
+ <div class="wp-mail-smtp-setting-label">
129
+ <label for="wp-mail-smtp-setting-email_delivery_errors_hidden">
130
+ <?php esc_html_e( 'Hide Email Delivery Errors', 'wp-mail-smtp' ); ?>
131
+ </label>
132
+ </div>
133
+ <div class="wp-mail-smtp-setting-field">
134
+ <?php
135
+ $is_hard_disabled = has_filter( 'wp_mail_smtp_admin_is_error_delivery_notice_enabled' ) && ! wp_mail_smtp()->get_admin()->is_error_delivery_notice_enabled();
136
+ ?>
137
+ <?php if ( $is_hard_disabled ) : ?>
138
+ <input type="checkbox" disabled checked id="wp-mail-smtp-setting-email_delivery_errors_hidden">
139
+ <?php else : ?>
140
+ <input name="wp-mail-smtp[general][email_delivery_errors_hidden]" type="checkbox" value="true"
141
+ <?php checked( true, $options->get( 'general', 'email_delivery_errors_hidden' ) ); ?>
142
+ id="wp-mail-smtp-setting-email_delivery_errors_hidden">
143
+ <?php endif; ?>
144
+
145
+ <label for="wp-mail-smtp-setting-email_delivery_errors_hidden">
146
+ <?php esc_html_e( 'Check this if you would like to hide warnings alerting of email delivery errors.', 'wp-mail-smtp' ); ?>
147
+ </label>
148
+
149
+ <?php if ( $is_hard_disabled ) : ?>
150
+ <p class="desc">
151
+ <?php
152
+ printf( /* translators: %s - filter that was used to disabled. */
153
+ esc_html__( 'Email Delivery Errors were disabled using a %s filter.', 'wp-mail-smtp' ),
154
+ '<code>wp_mail_smtp_admin_is_error_delivery_notice_enabled</code>'
155
+ );
156
+ ?>
157
+ </p>
158
+ <?php else : ?>
159
+ <p class="desc">
160
+ <?php
161
+ echo wp_kses(
162
+ __( '<strong>This is not recommended</strong> and should only be done for staging or development sites.', 'wp-mail-smtp' ),
163
+ array(
164
+ 'strong' => true,
165
+ )
166
+ );
167
+ ?>
168
+ </p>
169
+ <?php endif; ?>
170
+ </div>
171
+ </div>
172
+
173
+ <!-- Uninstall -->
174
+ <div id="wp-mail-smtp-setting-row-uninstall" class="wp-mail-smtp-setting-row wp-mail-smtp-setting-row-checkbox wp-mail-smtp-clear">
175
+ <div class="wp-mail-smtp-setting-label">
176
+ <label for="wp-mail-smtp-setting-uninstall">
177
+ <?php esc_html_e( 'Uninstall WP Mail SMTP', 'wp-mail-smtp' ); ?>
178
+ </label>
179
+ </div>
180
+ <div class="wp-mail-smtp-setting-field">
181
+ <input name="wp-mail-smtp[general][uninstall]" type="checkbox"
182
+ value="true" <?php checked( true, $options->get( 'general', 'uninstall' ) ); ?>
183
+ id="wp-mail-smtp-setting-uninstall">
184
+ <label for="wp-mail-smtp-setting-uninstall">
185
+ <?php esc_html_e( 'Check this if you would like to remove ALL WP Mail SMTP data upon plugin deletion. All settings will be unrecoverable.', 'wp-mail-smtp' ); ?>
186
+ </label>
187
+ </div>
188
+ </div>
189
+
190
+ <?php $this->display_save_btn(); ?>
191
+
192
+ </form>
193
+
194
+ <?php
195
+ }
196
+
197
+ /**
198
+ * @inheritdoc
199
+ */
200
+ public function process_post( $data ) {
201
+
202
+ $this->check_admin_referer();
203
+
204
+ $options = new Options();
205
+
206
+ // Unchecked checkboxes doesn't exist in $_POST, so we need to ensure we actually have them in data to save.
207
+ if ( empty( $data['general']['am_notifications_hidden'] ) ) {
208
+ $data['general']['am_notifications_hidden'] = false;
209
+ }
210
+ if ( empty( $data['general']['uninstall'] ) ) {
211
+ $data['general']['uninstall'] = false;
212
+ }
213
+
214
+ $to_save = array_merge( $options->get_all(), $data );
215
+
216
+ // All the sanitization is done there.
217
+ $options->set( $to_save );
218
+
219
+ WP::add_admin_notice(
220
+ esc_html__( 'Settings were successfully saved.', 'wp-mail-smtp' ),
221
+ WP::ADMIN_NOTICE_SUCCESS
222
+ );
223
+ }
224
+ }
src/Providers/PepipostAPI/Mailer.php CHANGED
@@ -186,6 +186,8 @@ class Mailer extends MailerAbstract {
186
 
187
  if ( $type === 'html' ) {
188
  $content_type = 'text/html';
 
 
189
  }
190
 
191
  $data[] = array(
@@ -204,7 +206,8 @@ class Mailer extends MailerAbstract {
204
  $data['value'] = $content;
205
 
206
  if ( $this->phpmailer->ContentType === 'text/plain' ) {
207
- $data['type'] = 'text/plain';
 
208
  }
209
 
210
  $this->set_body_param(
186
 
187
  if ( $type === 'html' ) {
188
  $content_type = 'text/html';
189
+ } else {
190
+ $content_value = nl2br( $content_value );
191
  }
192
 
193
  $data[] = array(
206
  $data['value'] = $content;
207
 
208
  if ( $this->phpmailer->ContentType === 'text/plain' ) {
209
+ $data['type'] = 'text/plain';
210
+ $data['value'] = nl2br( $data['value'] );
211
  }
212
 
213
  $this->set_body_param(
vendor/composer/autoload_files.php CHANGED
@@ -9,9 +9,6 @@ return array(
9
  '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
10
  'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
11
  'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
12
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
13
- '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
14
- 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
15
  '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
16
  'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
17
  );
9
  '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
10
  'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
11
  'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
 
 
 
12
  '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
13
  'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
14
  );
vendor/composer/autoload_psr4.php CHANGED
@@ -8,9 +8,6 @@ $baseDir = dirname($vendorDir);
8
  return array(
9
  'phpseclib\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
10
  'WPMailSMTP\\' => array($baseDir . '/src'),
11
- 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
12
- 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
13
- 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
14
  'SendinBlue\\Client\\' => array($vendorDir . '/sendinblue/api-v3-sdk/lib'),
15
  'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
16
  'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
8
  return array(
9
  'phpseclib\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
10
  'WPMailSMTP\\' => array($baseDir . '/src'),
 
 
 
11
  'SendinBlue\\Client\\' => array($vendorDir . '/sendinblue/api-v3-sdk/lib'),
12
  'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
13
  'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
vendor/composer/autoload_static.php CHANGED
@@ -10,9 +10,6 @@ class ComposerStaticInit72f613a3d0c2cc77892490951b6e5352
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
11
  'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
12
  'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
13
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
14
- '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
15
- 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
16
  '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
17
  'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
18
  );
@@ -28,9 +25,6 @@ class ComposerStaticInit72f613a3d0c2cc77892490951b6e5352
28
  ),
29
  'S' =>
30
  array (
31
- 'Symfony\\Polyfill\\Php72\\' => 23,
32
- 'Symfony\\Polyfill\\Mbstring\\' => 26,
33
- 'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
34
  'SendinBlue\\Client\\' => 18,
35
  ),
36
  'P' =>
@@ -69,18 +63,6 @@ class ComposerStaticInit72f613a3d0c2cc77892490951b6e5352
69
  array (
70
  0 => __DIR__ . '/../..' . '/src',
71
  ),
72
- 'Symfony\\Polyfill\\Php72\\' =>
73
- array (
74
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
75
- ),
76
- 'Symfony\\Polyfill\\Mbstring\\' =>
77
- array (
78
- 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
79
- ),
80
- 'Symfony\\Polyfill\\Intl\\Idn\\' =>
81
- array (
82
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
83
- ),
84
  'SendinBlue\\Client\\' =>
85
  array (
86
  0 => __DIR__ . '/..' . '/sendinblue/api-v3-sdk/lib',
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
11
  'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
12
  'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
 
 
 
13
  '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
14
  'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
15
  );
25
  ),
26
  'S' =>
27
  array (
 
 
 
28
  'SendinBlue\\Client\\' => 18,
29
  ),
30
  'P' =>
63
  array (
64
  0 => __DIR__ . '/../..' . '/src',
65
  ),
 
 
 
 
 
 
 
 
 
 
 
 
66
  'SendinBlue\\Client\\' =>
67
  array (
68
  0 => __DIR__ . '/..' . '/sendinblue/api-v3-sdk/lib',
vendor/guzzlehttp/guzzle/src/Client.php CHANGED
@@ -2,12 +2,11 @@
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Cookie\CookieJar;
5
- use GuzzleHttp\Exception\InvalidArgumentException;
6
  use GuzzleHttp\Promise;
7
  use GuzzleHttp\Psr7;
 
8
  use Psr\Http\Message\RequestInterface;
9
  use Psr\Http\Message\ResponseInterface;
10
- use Psr\Http\Message\UriInterface;
11
 
12
  /**
13
  * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
@@ -76,12 +75,6 @@ class Client implements ClientInterface
76
  $this->configureDefaults($config);
77
  }
78
 
79
- /**
80
- * @param string $method
81
- * @param array $args
82
- *
83
- * @return Promise\PromiseInterface
84
- */
85
  public function __call($method, $args)
86
  {
87
  if (count($args) < 1) {
@@ -96,14 +89,6 @@ class Client implements ClientInterface
96
  : $this->request($method, $uri, $opts);
97
  }
98
 
99
- /**
100
- * Asynchronously send an HTTP request.
101
- *
102
- * @param array $options Request options to apply to the given
103
- * request and to the transfer. See \GuzzleHttp\RequestOptions.
104
- *
105
- * @return Promise\PromiseInterface
106
- */
107
  public function sendAsync(RequestInterface $request, array $options = [])
108
  {
109
  // Merge the base URI into the request URI if needed.
@@ -115,35 +100,12 @@ class Client implements ClientInterface
115
  );
116
  }
117
 
118
- /**
119
- * Send an HTTP request.
120
- *
121
- * @param array $options Request options to apply to the given
122
- * request and to the transfer. See \GuzzleHttp\RequestOptions.
123
- *
124
- * @return ResponseInterface
125
- * @throws GuzzleException
126
- */
127
  public function send(RequestInterface $request, array $options = [])
128
  {
129
  $options[RequestOptions::SYNCHRONOUS] = true;
130
  return $this->sendAsync($request, $options)->wait();
131
  }
132
 
133
- /**
134
- * Create and send an asynchronous HTTP request.
135
- *
136
- * Use an absolute path to override the base path of the client, or a
137
- * relative path to append to the base path of the client. The URL can
138
- * contain the query string as well. Use an array to provide a URL
139
- * template and additional variables to use in the URL template expansion.
140
- *
141
- * @param string $method HTTP method
142
- * @param string|UriInterface $uri URI object or string.
143
- * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
144
- *
145
- * @return Promise\PromiseInterface
146
- */
147
  public function requestAsync($method, $uri = '', array $options = [])
148
  {
149
  $options = $this->prepareDefaults($options);
@@ -163,37 +125,12 @@ class Client implements ClientInterface
163
  return $this->transfer($request, $options);
164
  }
165
 
166
- /**
167
- * Create and send an HTTP request.
168
- *
169
- * Use an absolute path to override the base path of the client, or a
170
- * relative path to append to the base path of the client. The URL can
171
- * contain the query string as well.
172
- *
173
- * @param string $method HTTP method.
174
- * @param string|UriInterface $uri URI object or string.
175
- * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
176
- *
177
- * @return ResponseInterface
178
- * @throws GuzzleException
179
- */
180
  public function request($method, $uri = '', array $options = [])
181
  {
182
  $options[RequestOptions::SYNCHRONOUS] = true;
183
  return $this->requestAsync($method, $uri, $options)->wait();
184
  }
185
 
186
- /**
187
- * Get a client configuration option.
188
- *
189
- * These options include default request options of the client, a "handler"
190
- * (if utilized by the concrete client), and a "base_uri" if utilized by
191
- * the concrete client.
192
- *
193
- * @param string|null $option The config option to retrieve.
194
- *
195
- * @return mixed
196
- */
197
  public function getConfig($option = null)
198
  {
199
  return $option === null
@@ -201,11 +138,6 @@ class Client implements ClientInterface
201
  : (isset($this->config[$option]) ? $this->config[$option] : null);
202
  }
203
 
204
- /**
205
- * @param string|null $uri
206
- *
207
- * @return UriInterface
208
- */
209
  private function buildUri($uri, array $config)
210
  {
211
  // for BC we accept null which would otherwise fail in uri_for
@@ -215,11 +147,6 @@ class Client implements ClientInterface
215
  $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
216
  }
217
 
218
- if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
219
- $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
220
- $uri = Utils::idnUriConvert($uri, $idnOptions);
221
- }
222
-
223
  return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri;
224
  }
225
 
@@ -227,7 +154,6 @@ class Client implements ClientInterface
227
  * Configures the default options for a client.
228
  *
229
  * @param array $config
230
- * @return void
231
  */
232
  private function configureDefaults(array $config)
233
  {
@@ -236,8 +162,7 @@ class Client implements ClientInterface
236
  'http_errors' => true,
237
  'decode_content' => true,
238
  'verify' => true,
239
- 'cookies' => false,
240
- 'idn_conversion' => true,
241
  ];
242
 
243
  // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
@@ -245,7 +170,7 @@ class Client implements ClientInterface
245
  // We can only trust the HTTP_PROXY environment variable in a CLI
246
  // process due to the fact that PHP has no reliable mechanism to
247
  // get environment variables that start with "HTTP_".
248
- if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
249
  $defaults['proxy']['http'] = getenv('HTTP_PROXY');
250
  }
251
 
@@ -300,7 +225,7 @@ class Client implements ClientInterface
300
  if (array_key_exists('headers', $options)) {
301
  // Allows default headers to be unset.
302
  if ($options['headers'] === null) {
303
- $defaults['_conditional'] = [];
304
  unset($options['headers']);
305
  } elseif (!is_array($options['headers'])) {
306
  throw new \InvalidArgumentException('headers must be an array');
@@ -326,7 +251,8 @@ class Client implements ClientInterface
326
  * The URI of the request is not modified and the request options are used
327
  * as-is without merging in default options.
328
  *
329
- * @param array $options See \GuzzleHttp\RequestOptions.
 
330
  *
331
  * @return Promise\PromiseInterface
332
  */
@@ -345,7 +271,6 @@ class Client implements ClientInterface
345
  }
346
 
347
  $request = $this->applyOptions($request, $options);
348
- /** @var HandlerStack $handler */
349
  $handler = $options['handler'];
350
 
351
  try {
@@ -486,11 +411,6 @@ class Client implements ClientInterface
486
  return $request;
487
  }
488
 
489
- /**
490
- * Throw Exception with pre-set message.
491
- * @return void
492
- * @throws InvalidArgumentException Invalid body.
493
- */
494
  private function invalidBody()
495
  {
496
  throw new \InvalidArgumentException('Passing in the "body" request '
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Cookie\CookieJar;
 
5
  use GuzzleHttp\Promise;
6
  use GuzzleHttp\Psr7;
7
+ use Psr\Http\Message\UriInterface;
8
  use Psr\Http\Message\RequestInterface;
9
  use Psr\Http\Message\ResponseInterface;
 
10
 
11
  /**
12
  * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
75
  $this->configureDefaults($config);
76
  }
77
 
 
 
 
 
 
 
78
  public function __call($method, $args)
79
  {
80
  if (count($args) < 1) {
89
  : $this->request($method, $uri, $opts);
90
  }
91
 
 
 
 
 
 
 
 
 
92
  public function sendAsync(RequestInterface $request, array $options = [])
93
  {
94
  // Merge the base URI into the request URI if needed.
100
  );
101
  }
102
 
 
 
 
 
 
 
 
 
 
103
  public function send(RequestInterface $request, array $options = [])
104
  {
105
  $options[RequestOptions::SYNCHRONOUS] = true;
106
  return $this->sendAsync($request, $options)->wait();
107
  }
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  public function requestAsync($method, $uri = '', array $options = [])
110
  {
111
  $options = $this->prepareDefaults($options);
125
  return $this->transfer($request, $options);
126
  }
127
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  public function request($method, $uri = '', array $options = [])
129
  {
130
  $options[RequestOptions::SYNCHRONOUS] = true;
131
  return $this->requestAsync($method, $uri, $options)->wait();
132
  }
133
 
 
 
 
 
 
 
 
 
 
 
 
134
  public function getConfig($option = null)
135
  {
136
  return $option === null
138
  : (isset($this->config[$option]) ? $this->config[$option] : null);
139
  }
140
 
 
 
 
 
 
141
  private function buildUri($uri, array $config)
142
  {
143
  // for BC we accept null which would otherwise fail in uri_for
147
  $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
148
  }
149
 
 
 
 
 
 
150
  return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri;
151
  }
152
 
154
  * Configures the default options for a client.
155
  *
156
  * @param array $config
 
157
  */
158
  private function configureDefaults(array $config)
159
  {
162
  'http_errors' => true,
163
  'decode_content' => true,
164
  'verify' => true,
165
+ 'cookies' => false
 
166
  ];
167
 
168
  // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
170
  // We can only trust the HTTP_PROXY environment variable in a CLI
171
  // process due to the fact that PHP has no reliable mechanism to
172
  // get environment variables that start with "HTTP_".
173
+ if (php_sapi_name() == 'cli' && getenv('HTTP_PROXY')) {
174
  $defaults['proxy']['http'] = getenv('HTTP_PROXY');
175
  }
176
 
225
  if (array_key_exists('headers', $options)) {
226
  // Allows default headers to be unset.
227
  if ($options['headers'] === null) {
228
+ $defaults['_conditional'] = null;
229
  unset($options['headers']);
230
  } elseif (!is_array($options['headers'])) {
231
  throw new \InvalidArgumentException('headers must be an array');
251
  * The URI of the request is not modified and the request options are used
252
  * as-is without merging in default options.
253
  *
254
+ * @param RequestInterface $request
255
+ * @param array $options
256
  *
257
  * @return Promise\PromiseInterface
258
  */
271
  }
272
 
273
  $request = $this->applyOptions($request, $options);
 
274
  $handler = $options['handler'];
275
 
276
  try {
411
  return $request;
412
  }
413
 
 
 
 
 
 
414
  private function invalidBody()
415
  {
416
  throw new \InvalidArgumentException('Passing in the "body" request '
vendor/guzzlehttp/guzzle/src/ClientInterface.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  namespace GuzzleHttp;
3
 
4
- use GuzzleHttp\Exception\GuzzleException;
5
  use GuzzleHttp\Promise\PromiseInterface;
 
6
  use Psr\Http\Message\RequestInterface;
7
  use Psr\Http\Message\ResponseInterface;
8
  use Psr\Http\Message\UriInterface;
@@ -12,10 +12,7 @@ use Psr\Http\Message\UriInterface;
12
  */
13
  interface ClientInterface
14
  {
15
- /**
16
- * @deprecated Will be removed in Guzzle 7.0.0
17
- */
18
- const VERSION = '6.5.3';
19
 
20
  /**
21
  * Send an HTTP request.
1
  <?php
2
  namespace GuzzleHttp;
3
 
 
4
  use GuzzleHttp\Promise\PromiseInterface;
5
+ use GuzzleHttp\Exception\GuzzleException;
6
  use Psr\Http\Message\RequestInterface;
7
  use Psr\Http\Message\ResponseInterface;
8
  use Psr\Http\Message\UriInterface;
12
  */
13
  interface ClientInterface
14
  {
15
+ const VERSION = '6.4.1';
 
 
 
16
 
17
  /**
18
  * Send an HTTP request.
vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php CHANGED
@@ -94,8 +94,8 @@ class CookieJar implements CookieJarInterface
94
  */
95
  public function getCookieByName($name)
96
  {
97
- // don't allow a non string name
98
- if ($name === null || !is_scalar($name)) {
99
  return null;
100
  }
101
  foreach ($this->cookies as $cookie) {
@@ -103,8 +103,6 @@ class CookieJar implements CookieJarInterface
103
  return $cookie;
104
  }
105
  }
106
-
107
- return null;
108
  }
109
 
110
  public function toArray()
94
  */
95
  public function getCookieByName($name)
96
  {
97
+ // don't allow a null name
98
+ if ($name === null) {
99
  return null;
100
  }
101
  foreach ($this->cookies as $cookie) {
103
  return $cookie;
104
  }
105
  }
 
 
106
  }
107
 
108
  public function toArray()
vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php CHANGED
@@ -58,9 +58,9 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
58
  * arguments, then the cookie with the specified name, path and domain is
59
  * removed.
60
  *
61
- * @param string|null $domain Clears cookies matching a domain
62
- * @param string|null $path Clears cookies matching a domain and path
63
- * @param string|null $name Clears cookies matching a domain, path, and name
64
  *
65
  * @return CookieJarInterface
66
  */
58
  * arguments, then the cookie with the specified name, path and domain is
59
  * removed.
60
  *
61
+ * @param string $domain Clears cookies matching a domain
62
+ * @param string $path Clears cookies matching a domain and path
63
+ * @param string $name Clears cookies matching a domain, path, and name
64
  *
65
  * @return CookieJarInterface
66
  */
vendor/guzzlehttp/guzzle/src/Exception/RequestException.php CHANGED
@@ -1,9 +1,9 @@
1
  <?php
2
  namespace GuzzleHttp\Exception;
3
 
4
- use GuzzleHttp\Promise\PromiseInterface;
5
  use Psr\Http\Message\RequestInterface;
6
  use Psr\Http\Message\ResponseInterface;
 
7
  use Psr\Http\Message\UriInterface;
8
 
9
  /**
@@ -14,7 +14,7 @@ class RequestException extends TransferException
14
  /** @var RequestInterface */
15
  private $request;
16
 
17
- /** @var ResponseInterface|null */
18
  private $response;
19
 
20
  /** @var array */
@@ -124,17 +124,42 @@ class RequestException extends TransferException
124
  */
125
  public static function getResponseBodySummary(ResponseInterface $response)
126
  {
127
- return \GuzzleHttp\Psr7\get_message_body_summary($response);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  }
129
 
130
  /**
131
- * Obfuscates URI if there is a username and a password present
132
  *
133
  * @param UriInterface $uri
134
  *
135
  * @return UriInterface
136
  */
137
- private static function obfuscateUri(UriInterface $uri)
138
  {
139
  $userInfo = $uri->getUserInfo();
140
 
1
  <?php
2
  namespace GuzzleHttp\Exception;
3
 
 
4
  use Psr\Http\Message\RequestInterface;
5
  use Psr\Http\Message\ResponseInterface;
6
+ use GuzzleHttp\Promise\PromiseInterface;
7
  use Psr\Http\Message\UriInterface;
8
 
9
  /**
14
  /** @var RequestInterface */
15
  private $request;
16
 
17
+ /** @var ResponseInterface */
18
  private $response;
19
 
20
  /** @var array */
124
  */
125
  public static function getResponseBodySummary(ResponseInterface $response)
126
  {
127
+ $body = $response->getBody();
128
+
129
+ if (!$body->isSeekable() || !$body->isReadable()) {
130
+ return null;
131
+ }
132
+
133
+ $size = $body->getSize();
134
+
135
+ if ($size === 0) {
136
+ return null;
137
+ }
138
+
139
+ $summary = $body->read(120);
140
+ $body->rewind();
141
+
142
+ if ($size > 120) {
143
+ $summary .= ' (truncated...)';
144
+ }
145
+
146
+ // Matches any printable character, including unicode characters:
147
+ // letters, marks, numbers, punctuation, spacing, and separators.
148
+ if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/', $summary)) {
149
+ return null;
150
+ }
151
+
152
+ return $summary;
153
  }
154
 
155
  /**
156
+ * Obfuscates URI if there is an username and a password present
157
  *
158
  * @param UriInterface $uri
159
  *
160
  * @return UriInterface
161
  */
162
+ private static function obfuscateUri($uri)
163
  {
164
  $userInfo = $uri->getUserInfo();
165
 
vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php CHANGED
@@ -1,8 +1,8 @@
1
  <?php
2
  namespace GuzzleHttp\Handler;
3
 
4
- use GuzzleHttp\Exception\ConnectException;
5
  use GuzzleHttp\Exception\RequestException;
 
6
  use GuzzleHttp\Promise\FulfilledPromise;
7
  use GuzzleHttp\Psr7;
8
  use GuzzleHttp\Psr7\LazyOpenStream;
@@ -454,16 +454,11 @@ class CurlFactory implements CurlFactoryInterface
454
  }
455
 
456
  if (isset($options['ssl_key'])) {
457
- if (is_array($options['ssl_key'])) {
458
- if (count($options['ssl_key']) === 2) {
459
- list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
460
- } else {
461
- list($sslKey) = $options['ssl_key'];
462
- }
463
  }
464
-
465
- $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
466
-
467
  if (!file_exists($sslKey)) {
468
  throw new \InvalidArgumentException(
469
  "SSL private key not found: {$sslKey}"
1
  <?php
2
  namespace GuzzleHttp\Handler;
3
 
 
4
  use GuzzleHttp\Exception\RequestException;
5
+ use GuzzleHttp\Exception\ConnectException;
6
  use GuzzleHttp\Promise\FulfilledPromise;
7
  use GuzzleHttp\Psr7;
8
  use GuzzleHttp\Psr7\LazyOpenStream;
454
  }
455
 
456
  if (isset($options['ssl_key'])) {
457
+ $sslKey = $options['ssl_key'];
458
+ if (is_array($sslKey)) {
459
+ $conf[CURLOPT_SSLKEYPASSWD] = $sslKey[1];
460
+ $sslKey = $sslKey[0];
 
 
461
  }
 
 
 
462
  if (!file_exists($sslKey)) {
463
  throw new \InvalidArgumentException(
464
  "SSL private key not found: {$sslKey}"
vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php CHANGED
@@ -1,10 +1,9 @@
1
  <?php
2
  namespace GuzzleHttp\Handler;
3
 
4
- use GuzzleHttp\Exception\InvalidArgumentException;
5
  use GuzzleHttp\Promise as P;
6
  use GuzzleHttp\Promise\Promise;
7
- use GuzzleHttp\Utils;
8
  use Psr\Http\Message\RequestInterface;
9
 
10
  /**
@@ -24,7 +23,6 @@ class CurlMultiHandler
24
  private $active;
25
  private $handles = [];
26
  private $delays = [];
27
- private $options = [];
28
 
29
  /**
30
  * This handler accepts the following options:
@@ -32,8 +30,6 @@ class CurlMultiHandler
32
  * - handle_factory: An optional factory used to create curl handles
33
  * - select_timeout: Optional timeout (in seconds) to block before timing
34
  * out while selecting curl handles. Defaults to 1 second.
35
- * - options: An associative array of CURLMOPT_* options and
36
- * corresponding values for curl_multi_setopt()
37
  *
38
  * @param array $options
39
  */
@@ -49,23 +45,12 @@ class CurlMultiHandler
49
  } else {
50
  $this->selectTimeout = 1;
51
  }
52
-
53
- $this->options = isset($options['options']) ? $options['options'] : [];
54
  }
55
 
56
  public function __get($name)
57
  {
58
  if ($name === '_mh') {
59
- $this->_mh = curl_multi_init();
60
-
61
- foreach ($this->options as $option => $value) {
62
- // A warning is raised in case of a wrong option.
63
- curl_multi_setopt($this->_mh, $option, $value);
64
- }
65
-
66
- // Further calls to _mh will return the value directly, without entering the
67
- // __get() method at all.
68
- return $this->_mh;
69
  }
70
 
71
  throw new \BadMethodCallException();
@@ -103,7 +88,7 @@ class CurlMultiHandler
103
  {
104
  // Add any delayed handles if needed.
105
  if ($this->delays) {
106
- $currentTime = Utils::currentTime();
107
  foreach ($this->delays as $id => $delay) {
108
  if ($currentTime >= $delay) {
109
  unset($this->delays[$id]);
@@ -155,7 +140,7 @@ class CurlMultiHandler
155
  if (empty($easy->options['delay'])) {
156
  curl_multi_add_handle($this->_mh, $easy->handle);
157
  } else {
158
- $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
159
  }
160
  }
161
 
@@ -207,7 +192,7 @@ class CurlMultiHandler
207
 
208
  private function timeToNext()
209
  {
210
- $currentTime = Utils::currentTime();
211
  $nextTime = PHP_INT_MAX;
212
  foreach ($this->delays as $time) {
213
  if ($time < $nextTime) {
1
  <?php
2
  namespace GuzzleHttp\Handler;
3
 
 
4
  use GuzzleHttp\Promise as P;
5
  use GuzzleHttp\Promise\Promise;
6
+ use GuzzleHttp\Psr7;
7
  use Psr\Http\Message\RequestInterface;
8
 
9
  /**
23
  private $active;
24
  private $handles = [];
25
  private $delays = [];
 
26
 
27
  /**
28
  * This handler accepts the following options:
30
  * - handle_factory: An optional factory used to create curl handles
31
  * - select_timeout: Optional timeout (in seconds) to block before timing
32
  * out while selecting curl handles. Defaults to 1 second.
 
 
33
  *
34
  * @param array $options
35
  */
45
  } else {
46
  $this->selectTimeout = 1;
47
  }
 
 
48
  }
49
 
50
  public function __get($name)
51
  {
52
  if ($name === '_mh') {
53
+ return $this->_mh = curl_multi_init();
 
 
 
 
 
 
 
 
 
54
  }
55
 
56
  throw new \BadMethodCallException();
88
  {
89
  // Add any delayed handles if needed.
90
  if ($this->delays) {
91
+ $currentTime = \GuzzleHttp\_current_time();
92
  foreach ($this->delays as $id => $delay) {
93
  if ($currentTime >= $delay) {
94
  unset($this->delays[$id]);
140
  if (empty($easy->options['delay'])) {
141
  curl_multi_add_handle($this->_mh, $easy->handle);
142
  } else {
143
+ $this->delays[$id] = \GuzzleHttp\_current_time() + ($easy->options['delay'] / 1000);
144
  }
145
  }
146
 
192
 
193
  private function timeToNext()
194
  {
195
+ $currentTime = \GuzzleHttp\_current_time();
196
  $nextTime = PHP_INT_MAX;
197
  foreach ($this->delays as $time) {
198
  if ($time < $nextTime) {
vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php CHANGED
@@ -66,7 +66,7 @@ class MockHandler implements \Countable
66
  throw new \OutOfBoundsException('Mock queue is empty');
67
  }
68
 
69
- if (isset($options['delay']) && is_numeric($options['delay'])) {
70
  usleep($options['delay'] * 1000);
71
  }
72
 
@@ -175,11 +175,6 @@ class MockHandler implements \Countable
175
  return count($this->queue);
176
  }
177
 
178
- public function reset()
179
- {
180
- $this->queue = [];
181
- }
182
-
183
  private function invokeStats(
184
  RequestInterface $request,
185
  array $options,
66
  throw new \OutOfBoundsException('Mock queue is empty');
67
  }
68
 
69
+ if (isset($options['delay'])) {
70
  usleep($options['delay'] * 1000);
71
  }
72
 
175
  return count($this->queue);
176
  }
177
 
 
 
 
 
 
178
  private function invokeStats(
179
  RequestInterface $request,
180
  array $options,
vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php CHANGED
@@ -1,13 +1,12 @@
1
  <?php
2
  namespace GuzzleHttp\Handler;
3
 
4
- use GuzzleHttp\Exception\ConnectException;
5
  use GuzzleHttp\Exception\RequestException;
 
6
  use GuzzleHttp\Promise\FulfilledPromise;
7
  use GuzzleHttp\Promise\PromiseInterface;
8
  use GuzzleHttp\Psr7;
9
  use GuzzleHttp\TransferStats;
10
- use GuzzleHttp\Utils;
11
  use Psr\Http\Message\RequestInterface;
12
  use Psr\Http\Message\ResponseInterface;
13
  use Psr\Http\Message\StreamInterface;
@@ -34,7 +33,7 @@ class StreamHandler
34
  usleep($options['delay'] * 1000);
35
  }
36
 
37
- $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
38
 
39
  try {
40
  // Does not support the expect header.
@@ -83,7 +82,7 @@ class StreamHandler
83
  $stats = new TransferStats(
84
  $request,
85
  $response,
86
- Utils::currentTime() - $startTime,
87
  $error,
88
  []
89
  );
1
  <?php
2
  namespace GuzzleHttp\Handler;
3
 
 
4
  use GuzzleHttp\Exception\RequestException;
5
+ use GuzzleHttp\Exception\ConnectException;
6
  use GuzzleHttp\Promise\FulfilledPromise;
7
  use GuzzleHttp\Promise\PromiseInterface;
8
  use GuzzleHttp\Psr7;
9
  use GuzzleHttp\TransferStats;
 
10
  use Psr\Http\Message\RequestInterface;
11
  use Psr\Http\Message\ResponseInterface;
12
  use Psr\Http\Message\StreamInterface;
33
  usleep($options['delay'] * 1000);
34
  }
35
 
36
+ $startTime = isset($options['on_stats']) ? \GuzzleHttp\_current_time() : null;
37
 
38
  try {
39
  // Does not support the expect header.
82
  $stats = new TransferStats(
83
  $request,
84
  $response,
85
+ \GuzzleHttp\_current_time() - $startTime,
86
  $error,
87
  []
88
  );
vendor/guzzlehttp/guzzle/src/HandlerStack.php CHANGED
@@ -1,9 +1,7 @@
1
  <?php
2
  namespace GuzzleHttp;
3
 
4
- use GuzzleHttp\Promise\PromiseInterface;
5
  use Psr\Http\Message\RequestInterface;
6
- use Psr\Http\Message\ResponseInterface;
7
 
8
  /**
9
  * Creates a composed Guzzle handler function by stacking middlewares on top of
@@ -11,7 +9,7 @@ use Psr\Http\Message\ResponseInterface;
11
  */
12
  class HandlerStack
13
  {
14
- /** @var callable|null */
15
  private $handler;
16
 
17
  /** @var array */
@@ -61,8 +59,6 @@ class HandlerStack
61
  *
62
  * @param RequestInterface $request
63
  * @param array $options
64
- *
65
- * @return ResponseInterface|PromiseInterface
66
  */
67
  public function __invoke(RequestInterface $request, array $options)
68
  {
1
  <?php
2
  namespace GuzzleHttp;
3
 
 
4
  use Psr\Http\Message\RequestInterface;
 
5
 
6
  /**
7
  * Creates a composed Guzzle handler function by stacking middlewares on top of
9
  */
10
  class HandlerStack
11
  {
12
+ /** @var callable */
13
  private $handler;
14
 
15
  /** @var array */
59
  *
60
  * @param RequestInterface $request
61
  * @param array $options
 
 
62
  */
63
  public function __invoke(RequestInterface $request, array $options)
64
  {
vendor/guzzlehttp/guzzle/src/MessageFormatter.php CHANGED
@@ -168,11 +168,6 @@ class MessageFormatter
168
  );
169
  }
170
 
171
- /**
172
- * Get headers from message as string
173
- *
174
- * @return string
175
- */
176
  private function headers(MessageInterface $message)
177
  {
178
  $result = '';
168
  );
169
  }
170
 
 
 
 
 
 
171
  private function headers(MessageInterface $message)
172
  {
173
  $result = '';
vendor/guzzlehttp/guzzle/src/Pool.php CHANGED
@@ -1,10 +1,9 @@
1
  <?php
2
  namespace GuzzleHttp;
3
 
4
- use GuzzleHttp\Promise\EachPromise;
5
- use GuzzleHttp\Promise\PromiseInterface;
6
  use GuzzleHttp\Promise\PromisorInterface;
7
  use Psr\Http\Message\RequestInterface;
 
8
 
9
  /**
10
  * Sends an iterator of requests concurrently using a capped pool size.
@@ -70,11 +69,6 @@ class Pool implements PromisorInterface
70
  $this->each = new EachPromise($requests(), $config);
71
  }
72
 
73
- /**
74
- * Get promise
75
- *
76
- * @return PromiseInterface
77
- */
78
  public function promise()
79
  {
80
  return $this->each->promise();
@@ -112,11 +106,6 @@ class Pool implements PromisorInterface
112
  return $res;
113
  }
114
 
115
- /**
116
- * Execute callback(s)
117
- *
118
- * @return void
119
- */
120
  private static function cmpCallback(array &$options, $name, array &$results)
121
  {
122
  if (!isset($options[$name])) {
1
  <?php
2
  namespace GuzzleHttp;
3
 
 
 
4
  use GuzzleHttp\Promise\PromisorInterface;
5
  use Psr\Http\Message\RequestInterface;
6
+ use GuzzleHttp\Promise\EachPromise;
7
 
8
  /**
9
  * Sends an iterator of requests concurrently using a capped pool size.
69
  $this->each = new EachPromise($requests(), $config);
70
  }
71
 
 
 
 
 
 
72
  public function promise()
73
  {
74
  return $this->each->promise();
106
  return $res;
107
  }
108
 
 
 
 
 
 
109
  private static function cmpCallback(array &$options, $name, array &$results)
110
  {
111
  if (!isset($options[$name])) {
vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php CHANGED
@@ -66,11 +66,6 @@ class PrepareBodyMiddleware
66
  return $fn(Psr7\modify_request($request, $modify), $options);
67
  }
68
 
69
- /**
70
- * Add expect header
71
- *
72
- * @return void
73
- */
74
  private function addExpectHeader(
75
  RequestInterface $request,
76
  array $options,
66
  return $fn(Psr7\modify_request($request, $modify), $options);
67
  }
68
 
 
 
 
 
 
69
  private function addExpectHeader(
70
  RequestInterface $request,
71
  array $options,
vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php CHANGED
@@ -13,7 +13,7 @@ use Psr\Http\Message\UriInterface;
13
  * Request redirect middleware.
14
  *
15
  * Apply this middleware like other middleware using
16
- * {@see \GuzzleHttp\Middleware::redirect()}.
17
  */
18
  class RedirectMiddleware
19
  {
@@ -76,7 +76,7 @@ class RedirectMiddleware
76
  /**
77
  * @param RequestInterface $request
78
  * @param array $options
79
- * @param ResponseInterface $response
80
  *
81
  * @return ResponseInterface|PromiseInterface
82
  */
@@ -118,11 +118,6 @@ class RedirectMiddleware
118
  return $promise;
119
  }
120
 
121
- /**
122
- * Enable tracking on promise.
123
- *
124
- * @return PromiseInterface
125
- */
126
  private function withTracking(PromiseInterface $promise, $uri, $statusCode)
127
  {
128
  return $promise->then(
@@ -140,13 +135,6 @@ class RedirectMiddleware
140
  );
141
  }
142
 
143
- /**
144
- * Check for too many redirects
145
- *
146
- * @return void
147
- *
148
- * @throws TooManyRedirectsException Too many redirects.
149
- */
150
  private function guardMax(RequestInterface $request, array &$options)
151
  {
152
  $current = isset($options['__redirect_count'])
@@ -184,19 +172,13 @@ class RedirectMiddleware
184
  // would do.
185
  $statusCode = $response->getStatusCode();
186
  if ($statusCode == 303 ||
187
- ($statusCode <= 302 && !$options['allow_redirects']['strict'])
188
  ) {
189
  $modify['method'] = 'GET';
190
  $modify['body'] = '';
191
  }
192
 
193
- $uri = $this->redirectUri($request, $response, $protocols);
194
- if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
195
- $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
196
- $uri = Utils::idnUriConvert($uri, $idnOptions);
197
- }
198
-
199
- $modify['uri'] = $uri;
200
  Psr7\rewind_body($request);
201
 
202
  // Add the Referer header if it is told to do so and only
13
  * Request redirect middleware.
14
  *
15
  * Apply this middleware like other middleware using
16
+ * {@see GuzzleHttp\Middleware::redirect()}.
17
  */
18
  class RedirectMiddleware
19
  {
76
  /**
77
  * @param RequestInterface $request
78
  * @param array $options
79
+ * @param ResponseInterface|PromiseInterface $response
80
  *
81
  * @return ResponseInterface|PromiseInterface
82
  */
118
  return $promise;
119
  }
120
 
 
 
 
 
 
121
  private function withTracking(PromiseInterface $promise, $uri, $statusCode)
122
  {
123
  return $promise->then(
135
  );
136
  }
137
 
 
 
 
 
 
 
 
138
  private function guardMax(RequestInterface $request, array &$options)
139
  {
140
  $current = isset($options['__redirect_count'])
172
  // would do.
173
  $statusCode = $response->getStatusCode();
174
  if ($statusCode == 303 ||
175
+ ($statusCode <= 302 && $request->getBody() && !$options['allow_redirects']['strict'])
176
  ) {
177
  $modify['method'] = 'GET';
178
  $modify['body'] = '';
179
  }
180
 
181
+ $modify['uri'] = $this->redirectUri($request, $response, $protocols);
 
 
 
 
 
 
182
  Psr7\rewind_body($request);
183
 
184
  // Add the Referer header if it is told to do so and only
vendor/guzzlehttp/guzzle/src/RequestOptions.php CHANGED
@@ -132,14 +132,6 @@ final class RequestOptions
132
  */
133
  const HTTP_ERRORS = 'http_errors';
134
 
135
- /**
136
- * idn: (bool|int, default=true) A combination of IDNA_* constants for
137
- * idn_to_ascii() PHP's function (see "options" parameter). Set to false to
138
- * disable IDN support completely, or to true to use the default
139
- * configuration (IDNA_DEFAULT constant).
140
- */
141
- const IDN_CONVERSION = 'idn_conversion';
142
-
143
  /**
144
  * json: (mixed) Adds JSON data to a request. The provided value is JSON
145
  * encoded and a Content-Type header of application/json will be added to
132
  */
133
  const HTTP_ERRORS = 'http_errors';
134
 
 
 
 
 
 
 
 
 
135
  /**
136
  * json: (mixed) Adds JSON data to a request. The provided value is JSON
137
  * encoded and a Content-Type header of application/json will be added to
vendor/guzzlehttp/guzzle/src/RetryMiddleware.php CHANGED
@@ -47,11 +47,11 @@ class RetryMiddleware
47
  *
48
  * @param int $retries
49
  *
50
- * @return int milliseconds.
51
  */
52
  public static function exponentialDelay($retries)
53
  {
54
- return (int) pow(2, $retries - 1) * 1000;
55
  }
56
 
57
  /**
@@ -74,11 +74,6 @@ class RetryMiddleware
74
  );
75
  }
76
 
77
- /**
78
- * Execute fulfilled closure
79
- *
80
- * @return mixed
81
- */
82
  private function onFulfilled(RequestInterface $req, array $options)
83
  {
84
  return function ($value) use ($req, $options) {
@@ -95,11 +90,6 @@ class RetryMiddleware
95
  };
96
  }
97
 
98
- /**
99
- * Execute rejected closure
100
- *
101
- * @return callable
102
- */
103
  private function onRejected(RequestInterface $req, array $options)
104
  {
105
  return function ($reason) use ($req, $options) {
@@ -116,9 +106,6 @@ class RetryMiddleware
116
  };
117
  }
118
 
119
- /**
120
- * @return self
121
- */
122
  private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
123
  {
124
  $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
47
  *
48
  * @param int $retries
49
  *
50
+ * @return int
51
  */
52
  public static function exponentialDelay($retries)
53
  {
54
+ return (int) pow(2, $retries - 1);
55
  }
56
 
57
  /**
74
  );
75
  }
76
 
 
 
 
 
 
77
  private function onFulfilled(RequestInterface $req, array $options)
78
  {
79
  return function ($value) use ($req, $options) {
90
  };
91
  }
92
 
 
 
 
 
 
93
  private function onRejected(RequestInterface $req, array $options)
94
  {
95
  return function ($reason) use ($req, $options) {
106
  };
107
  }
108
 
 
 
 
109
  private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
110
  {
111
  $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
vendor/guzzlehttp/guzzle/src/TransferStats.php CHANGED
@@ -18,11 +18,11 @@ final class TransferStats
18
  private $handlerErrorData;
19
 
20
  /**
21
- * @param RequestInterface $request Request that was sent.
22
- * @param ResponseInterface|null $response Response received (if any)
23
- * @param float|null $transferTime Total handler transfer time.
24
- * @param mixed $handlerErrorData Handler error data.
25
- * @param array $handlerStats Handler specific stats.
26
  */
27
  public function __construct(
28
  RequestInterface $request,
@@ -93,7 +93,7 @@ final class TransferStats
93
  /**
94
  * Get the estimated time the request was being transferred by the handler.
95
  *
96
- * @return float|null Time in seconds.
97
  */
98
  public function getTransferTime()
99
  {
18
  private $handlerErrorData;
19
 
20
  /**
21
+ * @param RequestInterface $request Request that was sent.
22
+ * @param ResponseInterface $response Response received (if any)
23
+ * @param float|null $transferTime Total handler transfer time.
24
+ * @param mixed $handlerErrorData Handler error data.
25
+ * @param array $handlerStats Handler specific stats.
26
  */
27
  public function __construct(
28
  RequestInterface $request,
93
  /**
94
  * Get the estimated time the request was being transferred by the handler.
95
  *
96
+ * @return float Time in seconds.
97
  */
98
  public function getTransferTime()
99
  {
vendor/guzzlehttp/guzzle/src/Utils.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
- namespace GuzzleHttp;
3
-
4
- use GuzzleHttp\Exception\InvalidArgumentException;
5
- use Psr\Http\Message\UriInterface;
6
-
7
- final class Utils
8
- {
9
- /**
10
- * Wrapper for the hrtime() or microtime() functions
11
- * (depending on the PHP version, one of the two is used)
12
- *
13
- * @return float|mixed UNIX timestamp
14
- *
15
- * @internal
16
- */
17
- public static function currentTime()
18
- {
19
- return function_exists('hrtime') ? hrtime(true) / 1e9 : microtime(true);
20
- }
21
-
22
- /**
23
- * @param int $options
24
- *
25
- * @return UriInterface
26
- * @throws InvalidArgumentException
27
- *
28
- * @internal
29
- */
30
- public static function idnUriConvert(UriInterface $uri, $options = 0)
31
- {
32
- if ($uri->getHost()) {
33
- $idnaVariant = defined('INTL_IDNA_VARIANT_UTS46') ? INTL_IDNA_VARIANT_UTS46 : 0;
34
- $asciiHost = $idnaVariant === 0
35
- ? idn_to_ascii($uri->getHost(), $options)
36
- : idn_to_ascii($uri->getHost(), $options, $idnaVariant, $info);
37
- if ($asciiHost === false) {
38
- $errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
39
-
40
- $errorConstants = array_filter(array_keys(get_defined_constants()), function ($name) {
41
- return substr($name, 0, 11) === 'IDNA_ERROR_';
42
- });
43
-
44
- $errors = [];
45
- foreach ($errorConstants as $errorConstant) {
46
- if ($errorBitSet & constant($errorConstant)) {
47
- $errors[] = $errorConstant;
48
- }
49
- }
50
-
51
- $errorMessage = 'IDN conversion failed';
52
- if ($errors) {
53
- $errorMessage .= ' (errors: ' . implode(', ', $errors) . ')';
54
- }
55
-
56
- throw new InvalidArgumentException($errorMessage);
57
- } else {
58
- if ($uri->getHost() !== $asciiHost) {
59
- // Replace URI only if the ASCII version is different
60
- $uri = $uri->withHost($asciiHost);
61
- }
62
- }
63
- }
64
-
65
- return $uri;
66
- }
67
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/src/functions.php CHANGED
@@ -56,7 +56,7 @@ function describe_type($input)
56
  /**
57
  * Parses an array of header lines into an associative array of headers.
58
  *
59
- * @param iterable $lines Header lines array of strings in the following
60
  * format: "Name: Value"
61
  * @return array
62
  */
@@ -97,8 +97,8 @@ function debug_resource($value = null)
97
  *
98
  * The returned handler is not wrapped by any default middlewares.
99
  *
100
- * @return callable Returns the best handler for the given system.
101
  * @throws \RuntimeException if no viable Handler is available.
 
102
  */
103
  function choose_handler()
104
  {
@@ -332,3 +332,15 @@ function json_encode($value, $options = 0, $depth = 512)
332
 
333
  return $json;
334
  }
 
 
 
 
 
 
 
 
 
 
 
 
56
  /**
57
  * Parses an array of header lines into an associative array of headers.
58
  *
59
+ * @param array $lines Header lines array of strings in the following
60
  * format: "Name: Value"
61
  * @return array
62
  */
97
  *
98
  * The returned handler is not wrapped by any default middlewares.
99
  *
 
100
  * @throws \RuntimeException if no viable Handler is available.
101
+ * @return callable Returns the best handler for the given system.
102
  */
103
  function choose_handler()
104
  {
332
 
333
  return $json;
334
  }
335
+
336
+ /**
337
+ * Wrapper for the hrtime() or microtime() functions
338
+ * (depending on the PHP version, one of the two is used)
339
+ *
340
+ * @return float|mixed UNIX timestamp
341
+ * @internal
342
+ */
343
+ function _current_time()
344
+ {
345
+ return function_exists('hrtime') ? hrtime(true) / 1e9 : microtime(true);
346
+ }
vendor/symfony/polyfill-intl-idn/Idn.php DELETED
@@ -1,283 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Copyright (c) 2014 TrueServer B.V.
5
- *
6
- * Permission is hereby granted, free of charge, to any person obtaining a copy
7
- * of this software and associated documentation files (the "Software"), to deal
8
- * in the Software without restriction, including without limitation the rights
9
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- * copies of the Software, and to permit persons to whom the Software is furnished
11
- * to do so, subject to the following conditions:
12
- *
13
- * The above copyright notice and this permission notice shall be included in all
14
- * copies or substantial portions of the Software.
15
- *
16
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- * THE SOFTWARE.
23
- *
24
- * Originally forked from
25
- * https://github.com/true/php-punycode/blob/v2.1.1/src/Punycode.php
26
- */
27
-
28
- namespace Symfony\Polyfill\Intl\Idn;
29
-
30
- /**
31
- * Partial intl implementation in pure PHP.
32
- *
33
- * Implemented:
34
- * - idn_to_ascii - Convert domain name to IDNA ASCII form
35
- * - idn_to_utf8 - Convert domain name from IDNA ASCII to Unicode
36
- *
37
- * @author Renan Gonçalves <renan.saddam@gmail.com>
38
- * @author Sebastian Kroczek <sk@xbug.de>
39
- * @author Dmitry Lukashin <dmitry@lukashin.ru>
40
- * @author Laurent Bassin <laurent@bassin.info>
41
- *
42
- * @internal
43
- */
44
- final class Idn
45
- {
46
- const INTL_IDNA_VARIANT_2003 = 0;
47
- const INTL_IDNA_VARIANT_UTS46 = 1;
48
-
49
- private static $encodeTable = array(
50
- 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
51
- 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
52
- 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
53
- );
54
-
55
- private static $decodeTable = array(
56
- 'a' => 0, 'b' => 1, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 5,
57
- 'g' => 6, 'h' => 7, 'i' => 8, 'j' => 9, 'k' => 10, 'l' => 11,
58
- 'm' => 12, 'n' => 13, 'o' => 14, 'p' => 15, 'q' => 16, 'r' => 17,
59
- 's' => 18, 't' => 19, 'u' => 20, 'v' => 21, 'w' => 22, 'x' => 23,
60
- 'y' => 24, 'z' => 25, '0' => 26, '1' => 27, '2' => 28, '3' => 29,
61
- '4' => 30, '5' => 31, '6' => 32, '7' => 33, '8' => 34, '9' => 35,
62
- );
63
-
64
- public static function idn_to_ascii($domain, $options, $variant, &$idna_info = array())
65
- {
66
- if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
67
- @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
68
- }
69
-
70
- if (self::INTL_IDNA_VARIANT_UTS46 === $variant) {
71
- $domain = mb_strtolower($domain, 'utf-8');
72
- }
73
-
74
- $parts = explode('.', $domain);
75
-
76
- foreach ($parts as $i => &$part) {
77
- if ('' === $part && \count($parts) > 1 + $i) {
78
- return false;
79
- }
80
- if (false === $part = self::encodePart($part)) {
81
- return false;
82
- }
83
- }
84
-
85
- $output = implode('.', $parts);
86
-
87
- $idna_info = array(
88
- 'result' => \strlen($output) > 255 ? false : $output,
89
- 'isTransitionalDifferent' => false,
90
- 'errors' => 0,
91
- );
92
-
93
- return $idna_info['result'];
94
- }
95
-
96
- public static function idn_to_utf8($domain, $options, $variant, &$idna_info = array())
97
- {
98
- if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
99
- @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED);
100
- }
101
-
102
- $parts = explode('.', $domain);
103
-
104
- foreach ($parts as &$part) {
105
- $length = \strlen($part);
106
- if ($length < 1 || 63 < $length) {
107
- continue;
108
- }
109
- if (0 !== strpos($part, 'xn--')) {
110
- continue;
111
- }
112
-
113
- $part = substr($part, 4);
114
- $part = self::decodePart($part);
115
- }
116
-
117
- $output = implode('.', $parts);
118
-
119
- $idna_info = array(
120
- 'result' => \strlen($output) > 255 ? false : $output,
121
- 'isTransitionalDifferent' => false,
122
- 'errors' => 0,
123
- );
124
-
125
- return $idna_info['result'];
126
- }
127
-
128
- private static function encodePart($input)
129
- {
130
- $codePoints = self::listCodePoints($input);
131
-
132
- $n = 128;
133
- $bias = 72;
134
- $delta = 0;
135
- $h = $b = \count($codePoints['basic']);
136
-
137
- $output = '';
138
- foreach ($codePoints['basic'] as $code) {
139
- $output .= mb_chr($code, 'utf-8');
140
- }
141
- if ($input === $output) {
142
- return $output;
143
- }
144
- if ($b > 0) {
145
- $output .= '-';
146
- }
147
-
148
- $codePoints['nonBasic'] = array_unique($codePoints['nonBasic']);
149
- sort($codePoints['nonBasic']);
150
-
151
- $i = 0;
152
- $length = mb_strlen($input, 'utf-8');
153
- while ($h < $length) {
154
- $m = $codePoints['nonBasic'][$i++];
155
- $delta += ($m - $n) * ($h + 1);
156
- $n = $m;
157
-
158
- foreach ($codePoints['all'] as $c) {
159
- if ($c < $n || $c < 128) {
160
- ++$delta;
161
- }
162
- if ($c === $n) {
163
- $q = $delta;
164
- for ($k = 36;; $k += 36) {
165
- $t = self::calculateThreshold($k, $bias);
166
- if ($q < $t) {
167
- break;
168
- }
169
-
170
- $code = $t + (($q - $t) % (36 - $t));
171
- $output .= self::$encodeTable[$code];
172
-
173
- $q = ($q - $t) / (36 - $t);
174
- }
175
-
176
- $output .= self::$encodeTable[$q];
177
- $bias = self::adapt($delta, $h + 1, ($h === $b));
178
- $delta = 0;
179
- ++$h;
180
- }
181
- }
182
-
183
- ++$delta;
184
- ++$n;
185
- }
186
-
187
- $output = 'xn--'.$output;
188
-
189
- return \strlen($output) < 1 || 63 < \strlen($output) ? false : strtolower($output);
190
- }
191
-
192
- private static function listCodePoints($input)
193
- {
194
- $codePoints = array(
195
- 'all' => array(),
196
- 'basic' => array(),
197
- 'nonBasic' => array(),
198
- );
199
-
200
- $length = mb_strlen($input, 'utf-8');
201
- for ($i = 0; $i < $length; ++$i) {
202
- $char = mb_substr($input, $i, 1, 'utf-8');
203
- $code = mb_ord($char, 'utf-8');
204
- if ($code < 128) {
205
- $codePoints['all'][] = $codePoints['basic'][] = $code;
206
- } else {
207
- $codePoints['all'][] = $codePoints['nonBasic'][] = $code;
208
- }
209
- }
210
-
211
- return $codePoints;
212
- }
213
-
214
- private static function calculateThreshold($k, $bias)
215
- {
216
- if ($k <= $bias + 1) {
217
- return 1;
218
- }
219
- if ($k >= $bias + 26) {
220
- return 26;
221
- }
222
-
223
- return $k - $bias;
224
- }
225
-
226
- private static function adapt($delta, $numPoints, $firstTime)
227
- {
228
- $delta = (int) ($firstTime ? $delta / 700 : $delta / 2);
229
- $delta += (int) ($delta / $numPoints);
230
-
231
- $k = 0;
232
- while ($delta > 35 * 13) {
233
- $delta = (int) ($delta / 35);
234
- $k = $k + 36;
235
- }
236
-
237
- return $k + (int) (36 * $delta / ($delta + 38));
238
- }
239
-
240
- private static function decodePart($input)
241
- {
242
- $n = 128;
243
- $i = 0;
244
- $bias = 72;
245
- $output = '';
246
-
247
- $pos = strrpos($input, '-');
248
- if (false !== $pos) {
249
- $output = substr($input, 0, $pos++);
250
- } else {
251
- $pos = 0;
252
- }
253
-
254
- $outputLength = \strlen($output);
255
- $inputLength = \strlen($input);
256
-
257
- while ($pos < $inputLength) {
258
- $oldi = $i;
259
- $w = 1;
260
-
261
- for ($k = 36;; $k += 36) {
262
- $digit = self::$decodeTable[$input[$pos++]];
263
- $i += $digit * $w;
264
- $t = self::calculateThreshold($k, $bias);
265
-
266
- if ($digit < $t) {
267
- break;
268
- }
269
-
270
- $w *= 36 - $t;
271
- }
272
-
273
- $bias = self::adapt($i - $oldi, ++$outputLength, 0 === $oldi);
274
- $n = $n + (int) ($i / $outputLength);
275
- $i = $i % $outputLength;
276
- $output = mb_substr($output, 0, $i, 'utf-8').mb_chr($n, 'utf-8').mb_substr($output, $i, $outputLength - 1, 'utf-8');
277
-
278
- ++$i;
279
- }
280
-
281
- return $output;
282
- }
283
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2018-2019 Fabien Potencier
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is furnished
8
- to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/bootstrap.php DELETED
@@ -1,61 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- use Symfony\Polyfill\Intl\Idn as p;
13
-
14
- if (!defined('IDNA_DEFAULT')) {
15
- define('U_IDNA_PROHIBITED_ERROR', 66560);
16
- define('U_IDNA_ERROR_START', 66560);
17
- define('U_IDNA_UNASSIGNED_ERROR', 66561);
18
- define('U_IDNA_CHECK_BIDI_ERROR', 66562);
19
- define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
20
- define('U_IDNA_ACE_PREFIX_ERROR', 66564);
21
- define('U_IDNA_VERIFICATION_ERROR', 66565);
22
- define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
23
- define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
24
- define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
25
- define('U_IDNA_ERROR_LIMIT', 66569);
26
- define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
27
- define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
28
- define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
29
- define('IDNA_DEFAULT', 0);
30
- define('IDNA_ALLOW_UNASSIGNED', 1);
31
- define('IDNA_USE_STD3_RULES', 2);
32
- define('IDNA_CHECK_BIDI', 4);
33
- define('IDNA_CHECK_CONTEXTJ', 8);
34
- define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
35
- define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
36
- define('INTL_IDNA_VARIANT_2003', 0);
37
- define('INTL_IDNA_VARIANT_UTS46', 1);
38
- define('IDNA_ERROR_EMPTY_LABEL', 1);
39
- define('IDNA_ERROR_LABEL_TOO_LONG', 2);
40
- define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
41
- define('IDNA_ERROR_LEADING_HYPHEN', 8);
42
- define('IDNA_ERROR_TRAILING_HYPHEN', 16);
43
- define('IDNA_ERROR_HYPHEN_3_4', 32);
44
- define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
45
- define('IDNA_ERROR_DISALLOWED', 128);
46
- define('IDNA_ERROR_PUNYCODE', 256);
47
- define('IDNA_ERROR_LABEL_HAS_DOT', 512);
48
- define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
49
- define('IDNA_ERROR_BIDI', 2048);
50
- define('IDNA_ERROR_CONTEXTJ', 4096);
51
- }
52
-
53
- if (!function_exists('idn_to_ascii')) {
54
- if (PHP_VERSION_ID < 70400) {
55
- function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
56
- function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
57
- } else {
58
- function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); }
59
- function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); }
60
- }
61
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-mbstring/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2015-2019 Fabien Potencier
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is furnished
8
- to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-mbstring/Mbstring.php DELETED
@@ -1,847 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- namespace Symfony\Polyfill\Mbstring;
13
-
14
- /**
15
- * Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
16
- *
17
- * Implemented:
18
- * - mb_chr - Returns a specific character from its Unicode code point
19
- * - mb_convert_encoding - Convert character encoding
20
- * - mb_convert_variables - Convert character code in variable(s)
21
- * - mb_decode_mimeheader - Decode string in MIME header field
22
- * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
23
- * - mb_decode_numericentity - Decode HTML numeric string reference to character
24
- * - mb_encode_numericentity - Encode character to HTML numeric string reference
25
- * - mb_convert_case - Perform case folding on a string
26
- * - mb_detect_encoding - Detect character encoding
27
- * - mb_get_info - Get internal settings of mbstring
28
- * - mb_http_input - Detect HTTP input character encoding
29
- * - mb_http_output - Set/Get HTTP output character encoding
30
- * - mb_internal_encoding - Set/Get internal character encoding
31
- * - mb_list_encodings - Returns an array of all supported encodings
32
- * - mb_ord - Returns the Unicode code point of a character
33
- * - mb_output_handler - Callback function converts character encoding in output buffer
34
- * - mb_scrub - Replaces ill-formed byte sequences with substitute characters
35
- * - mb_strlen - Get string length
36
- * - mb_strpos - Find position of first occurrence of string in a string
37
- * - mb_strrpos - Find position of last occurrence of a string in a string
38
- * - mb_str_split - Convert a string to an array
39
- * - mb_strtolower - Make a string lowercase
40
- * - mb_strtoupper - Make a string uppercase
41
- * - mb_substitute_character - Set/Get substitution character
42
- * - mb_substr - Get part of string
43
- * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive
44
- * - mb_stristr - Finds first occurrence of a string within another, case insensitive
45
- * - mb_strrchr - Finds the last occurrence of a character in a string within another
46
- * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive
47
- * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive
48
- * - mb_strstr - Finds first occurrence of a string within another
49
- * - mb_strwidth - Return width of string
50
- * - mb_substr_count - Count the number of substring occurrences
51
- *
52
- * Not implemented:
53
- * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
54
- * - mb_ereg_* - Regular expression with multibyte support
55
- * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable
56
- * - mb_preferred_mime_name - Get MIME charset string
57
- * - mb_regex_encoding - Returns current encoding for multibyte regex as string
58
- * - mb_regex_set_options - Set/Get the default options for mbregex functions
59
- * - mb_send_mail - Send encoded mail
60
- * - mb_split - Split multibyte string using regular expression
61
- * - mb_strcut - Get part of string
62
- * - mb_strimwidth - Get truncated string with specified width
63
- *
64
- * @author Nicolas Grekas <p@tchwork.com>
65
- *
66
- * @internal
67
- */
68
- final class Mbstring
69
- {
70
- const MB_CASE_FOLD = PHP_INT_MAX;
71
-
72
- private static $encodingList = array('ASCII', 'UTF-8');
73
- private static $language = 'neutral';
74
- private static $internalEncoding = 'UTF-8';
75
- private static $caseFold = array(
76
- array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"),
77
- array('μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'),
78
- );
79
-
80
- public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
81
- {
82
- if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) {
83
- $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
84
- } else {
85
- $fromEncoding = self::getEncoding($fromEncoding);
86
- }
87
-
88
- $toEncoding = self::getEncoding($toEncoding);
89
-
90
- if ('BASE64' === $fromEncoding) {
91
- $s = base64_decode($s);
92
- $fromEncoding = $toEncoding;
93
- }
94
-
95
- if ('BASE64' === $toEncoding) {
96
- return base64_encode($s);
97
- }
98
-
99
- if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
100
- if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
101
- $fromEncoding = 'Windows-1252';
102
- }
103
- if ('UTF-8' !== $fromEncoding) {
104
- $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
105
- }
106
-
107
- return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s);
108
- }
109
-
110
- if ('HTML-ENTITIES' === $fromEncoding) {
111
- $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
112
- $fromEncoding = 'UTF-8';
113
- }
114
-
115
- return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
116
- }
117
-
118
- public static function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null)
119
- {
120
- $vars = array(&$a, &$b, &$c, &$d, &$e, &$f);
121
-
122
- $ok = true;
123
- array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
124
- if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
125
- $ok = false;
126
- }
127
- });
128
-
129
- return $ok ? $fromEncoding : false;
130
- }
131
-
132
- public static function mb_decode_mimeheader($s)
133
- {
134
- return iconv_mime_decode($s, 2, self::$internalEncoding);
135
- }
136
-
137
- public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
138
- {
139
- trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING);
140
- }
141
-
142
- public static function mb_decode_numericentity($s, $convmap, $encoding = null)
143
- {
144
- if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
145
- trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
146
-
147
- return null;
148
- }
149
-
150
- if (!\is_array($convmap) || !$convmap) {
151
- return false;
152
- }
153
-
154
- if (null !== $encoding && !\is_scalar($encoding)) {
155
- trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
156
-
157
- return ''; // Instead of null (cf. mb_encode_numericentity).
158
- }
159
-
160
- $s = (string) $s;
161
- if ('' === $s) {
162
- return '';
163
- }
164
-
165
- $encoding = self::getEncoding($encoding);
166
-
167
- if ('UTF-8' === $encoding) {
168
- $encoding = null;
169
- if (!preg_match('//u', $s)) {
170
- $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
171
- }
172
- } else {
173
- $s = iconv($encoding, 'UTF-8//IGNORE', $s);
174
- }
175
-
176
- $cnt = floor(\count($convmap) / 4) * 4;
177
-
178
- for ($i = 0; $i < $cnt; $i += 4) {
179
- // collector_decode_htmlnumericentity ignores $convmap[$i + 3]
180
- $convmap[$i] += $convmap[$i + 2];
181
- $convmap[$i + 1] += $convmap[$i + 2];
182
- }
183
-
184
- $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
185
- $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
186
- for ($i = 0; $i < $cnt; $i += 4) {
187
- if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
188
- return Mbstring::mb_chr($c - $convmap[$i + 2]);
189
- }
190
- }
191
-
192
- return $m[0];
193
- }, $s);
194
-
195
- if (null === $encoding) {
196
- return $s;
197
- }
198
-
199
- return iconv('UTF-8', $encoding.'//IGNORE', $s);
200
- }
201
-
202
- public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
203
- {
204
- if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) {
205
- trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING);
206
-
207
- return null;
208
- }
209
-
210
- if (!\is_array($convmap) || !$convmap) {
211
- return false;
212
- }
213
-
214
- if (null !== $encoding && !\is_scalar($encoding)) {
215
- trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING);
216
-
217
- return null; // Instead of '' (cf. mb_decode_numericentity).
218
- }
219
-
220
- if (null !== $is_hex && !\is_scalar($is_hex)) {
221
- trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING);
222
-
223
- return null;
224
- }
225
-
226
- $s = (string) $s;
227
- if ('' === $s) {
228
- return '';
229
- }
230
-
231
- $encoding = self::getEncoding($encoding);
232
-
233
- if ('UTF-8' === $encoding) {
234
- $encoding = null;
235
- if (!preg_match('//u', $s)) {
236
- $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
237
- }
238
- } else {
239
- $s = iconv($encoding, 'UTF-8//IGNORE', $s);
240
- }
241
-
242
- static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
243
-
244
- $cnt = floor(\count($convmap) / 4) * 4;
245
- $i = 0;
246
- $len = \strlen($s);
247
- $result = '';
248
-
249
- while ($i < $len) {
250
- $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
251
- $uchr = substr($s, $i, $ulen);
252
- $i += $ulen;
253
- $c = self::mb_ord($uchr);
254
-
255
- for ($j = 0; $j < $cnt; $j += 4) {
256
- if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
257
- $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
258
- $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';';
259
- continue 2;
260
- }
261
- }
262
- $result .= $uchr;
263
- }
264
-
265
- if (null === $encoding) {
266
- return $result;
267
- }
268
-
269
- return iconv('UTF-8', $encoding.'//IGNORE', $result);
270
- }
271
-
272
- public static function mb_convert_case($s, $mode, $encoding = null)
273
- {
274
- $s = (string) $s;
275
- if ('' === $s) {
276
- return '';
277
- }
278
-
279
- $encoding = self::getEncoding($encoding);
280
-
281
- if ('UTF-8' === $encoding) {
282
- $encoding = null;
283
- if (!preg_match('//u', $s)) {
284
- $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
285
- }
286
- } else {
287
- $s = iconv($encoding, 'UTF-8//IGNORE', $s);
288
- }
289
-
290
- if (MB_CASE_TITLE == $mode) {
291
- static $titleRegexp = null;
292
- if (null === $titleRegexp) {
293
- $titleRegexp = self::getData('titleCaseRegexp');
294
- }
295
- $s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s);
296
- } else {
297
- if (MB_CASE_UPPER == $mode) {
298
- static $upper = null;
299
- if (null === $upper) {
300
- $upper = self::getData('upperCase');
301
- }
302
- $map = $upper;
303
- } else {
304
- if (self::MB_CASE_FOLD === $mode) {
305
- $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s);
306
- }
307
-
308
- static $lower = null;
309
- if (null === $lower) {
310
- $lower = self::getData('lowerCase');
311
- }
312
- $map = $lower;
313
- }
314
-
315
- static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4);
316
-
317
- $i = 0;
318
- $len = \strlen($s);
319
-
320
- while ($i < $len) {
321
- $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
322
- $uchr = substr($s, $i, $ulen);
323
- $i += $ulen;
324
-
325
- if (isset($map[$uchr])) {
326
- $uchr = $map[$uchr];
327
- $nlen = \strlen($uchr);
328
-
329
- if ($nlen == $ulen) {
330
- $nlen = $i;
331
- do {
332
- $s[--$nlen] = $uchr[--$ulen];
333
- } while ($ulen);
334
- } else {
335
- $s = substr_replace($s, $uchr, $i - $ulen, $ulen);
336
- $len += $nlen - $ulen;
337
- $i += $nlen - $ulen;
338
- }
339
- }
340
- }
341
- }
342
-
343
- if (null === $encoding) {
344
- return $s;
345
- }
346
-
347
- return iconv('UTF-8', $encoding.'//IGNORE', $s);
348
- }
349
-
350
- public static function mb_internal_encoding($encoding = null)
351
- {
352
- if (null === $encoding) {
353
- return self::$internalEncoding;
354
- }
355
-
356
- $encoding = self::getEncoding($encoding);
357
-
358
- if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) {
359
- self::$internalEncoding = $encoding;
360
-
361
- return true;
362
- }
363
-
364
- return false;
365
- }
366
-
367
- public static function mb_language($lang = null)
368
- {
369
- if (null === $lang) {
370
- return self::$language;
371
- }
372
-
373
- switch ($lang = strtolower($lang)) {
374
- case 'uni':
375
- case 'neutral':
376
- self::$language = $lang;
377
-
378
- return true;
379
- }
380
-
381
- return false;
382
- }
383
-
384
- public static function mb_list_encodings()
385
- {
386
- return array('UTF-8');
387
- }
388
-
389
- public static function mb_encoding_aliases($encoding)
390
- {
391
- switch (strtoupper($encoding)) {
392
- case 'UTF8':
393
- case 'UTF-8':
394
- return array('utf8');
395
- }
396
-
397
- return false;
398
- }
399
-
400
- public static function mb_check_encoding($var = null, $encoding = null)
401
- {
402
- if (null === $encoding) {
403
- if (null === $var) {
404
- return false;
405
- }
406
- $encoding = self::$internalEncoding;
407
- }
408
-
409
- return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var);
410
- }
411
-
412
- public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
413
- {
414
- if (null === $encodingList) {
415
- $encodingList = self::$encodingList;
416
- } else {
417
- if (!\is_array($encodingList)) {
418
- $encodingList = array_map('trim', explode(',', $encodingList));
419
- }
420
- $encodingList = array_map('strtoupper', $encodingList);
421
- }
422
-
423
- foreach ($encodingList as $enc) {
424
- switch ($enc) {
425
- case 'ASCII':
426
- if (!preg_match('/[\x80-\xFF]/', $str)) {
427
- return $enc;
428
- }
429
- break;
430
-
431
- case 'UTF8':
432
- case 'UTF-8':
433
- if (preg_match('//u', $str)) {
434
- return 'UTF-8';
435
- }
436
- break;
437
-
438
- default:
439
- if (0 === strncmp($enc, 'ISO-8859-', 9)) {
440
- return $enc;
441
- }
442
- }
443
- }
444
-
445
- return false;
446
- }
447
-
448
- public static function mb_detect_order($encodingList = null)
449
- {
450
- if (null === $encodingList) {
451
- return self::$encodingList;
452
- }
453
-
454
- if (!\is_array($encodingList)) {
455
- $encodingList = array_map('trim', explode(',', $encodingList));
456
- }
457
- $encodingList = array_map('strtoupper', $encodingList);
458
-
459
- foreach ($encodingList as $enc) {
460
- switch ($enc) {
461
- default:
462
- if (strncmp($enc, 'ISO-8859-', 9)) {
463
- return false;
464
- }
465
- // no break
466
- case 'ASCII':
467
- case 'UTF8':
468
- case 'UTF-8':
469
- }
470
- }
471
-
472
- self::$encodingList = $encodingList;
473
-
474
- return true;
475
- }
476
-
477
- public static function mb_strlen($s, $encoding = null)
478
- {
479
- $encoding = self::getEncoding($encoding);
480
- if ('CP850' === $encoding || 'ASCII' === $encoding) {
481
- return \strlen($s);
482
- }
483
-
484
- return @iconv_strlen($s, $encoding);
485
- }
486
-
487
- public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
488
- {
489
- $encoding = self::getEncoding($encoding);
490
- if ('CP850' === $encoding || 'ASCII' === $encoding) {
491
- return strpos($haystack, $needle, $offset);
492
- }
493
-
494
- $needle = (string) $needle;
495
- if ('' === $needle) {
496
- trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING);
497
-
498
- return false;
499
- }
500
-
501
- return iconv_strpos($haystack, $needle, $offset, $encoding);
502
- }
503
-
504
- public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
505
- {
506
- $encoding = self::getEncoding($encoding);
507
- if ('CP850' === $encoding || 'ASCII' === $encoding) {
508
- return strrpos($haystack, $needle, $offset);
509
- }
510
-
511
- if ($offset != (int) $offset) {
512
- $offset = 0;
513
- } elseif ($offset = (int) $offset) {
514
- if ($offset < 0) {
515
- if (0 > $offset += self::mb_strlen($needle)) {
516
- $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
517
- }
518
- $offset = 0;
519
- } else {
520
- $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
521
- }
522
- }
523
-
524
- $pos = iconv_strrpos($haystack, $needle, $encoding);
525
-
526
- return false !== $pos ? $offset + $pos : false;
527
- }
528
-
529
- public static function mb_str_split($string, $split_length = 1, $encoding = null)
530
- {
531
- if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) {
532
- trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING);
533
-
534
- return null;
535
- }
536
-
537
- if (1 > $split_length = (int) $split_length) {
538
- trigger_error('The length of each segment must be greater than zero', E_USER_WARNING);
539
-
540
- return false;
541
- }
542
-
543
- if (null === $encoding) {
544
- $encoding = mb_internal_encoding();
545
- }
546
-
547
- if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
548
- $rx = '/(';
549
- while (65535 < $split_length) {
550
- $rx .= '.{65535}';
551
- $split_length -= 65535;
552
- }
553
- $rx .= '.{'.$split_length.'})/us';
554
-
555
- return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
556
- }
557
-
558
- $result = array();
559
- $length = mb_strlen($string, $encoding);
560
-
561
- for ($i = 0; $i < $length; $i += $split_length) {
562
- $result[] = mb_substr($string, $i, $split_length, $encoding);
563
- }
564
-
565
- return $result;
566
- }
567
-
568
- public static function mb_strtolower($s, $encoding = null)
569
- {
570
- return self::mb_convert_case($s, MB_CASE_LOWER, $encoding);
571
- }
572
-
573
- public static function mb_strtoupper($s, $encoding = null)
574
- {
575
- return self::mb_convert_case($s, MB_CASE_UPPER, $encoding);
576
- }
577
-
578
- public static function mb_substitute_character($c = null)
579
- {
580
- if (0 === strcasecmp($c, 'none')) {
581
- return true;
582
- }
583
-
584
- return null !== $c ? false : 'none';
585
- }
586
-
587
- public static function mb_substr($s, $start, $length = null, $encoding = null)
588
- {
589
- $encoding = self::getEncoding($encoding);
590
- if ('CP850' === $encoding || 'ASCII' === $encoding) {
591
- return (string) substr($s, $start, null === $length ? 2147483647 : $length);
592
- }
593
-
594
- if ($start < 0) {
595
- $start = iconv_strlen($s, $encoding) + $start;
596
- if ($start < 0) {
597
- $start = 0;
598
- }
599
- }
600
-
601
- if (null === $length) {
602
- $length = 2147483647;
603
- } elseif ($length < 0) {
604
- $length = iconv_strlen($s, $encoding) + $length - $start;
605
- if ($length < 0) {
606
- return '';
607
- }
608
- }
609
-
610
- return (string) iconv_substr($s, $start, $length, $encoding);
611
- }
612
-
613
- public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
614
- {
615
- $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
616
- $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
617
-
618
- return self::mb_strpos($haystack, $needle, $offset, $encoding);
619
- }
620
-
621
- public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
622
- {
623
- $pos = self::mb_stripos($haystack, $needle, 0, $encoding);
624
-
625
- return self::getSubpart($pos, $part, $haystack, $encoding);
626
- }
627
-
628
- public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
629
- {
630
- $encoding = self::getEncoding($encoding);
631
- if ('CP850' === $encoding || 'ASCII' === $encoding) {
632
- return strrchr($haystack, $needle, $part);
633
- }
634
- $needle = self::mb_substr($needle, 0, 1, $encoding);
635
- $pos = iconv_strrpos($haystack, $needle, $encoding);
636
-
637
- return self::getSubpart($pos, $part, $haystack, $encoding);
638
- }
639
-
640
- public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
641
- {
642
- $needle = self::mb_substr($needle, 0, 1, $encoding);
643
- $pos = self::mb_strripos($haystack, $needle, $encoding);
644
-
645
- return self::getSubpart($pos, $part, $haystack, $encoding);
646
- }
647
-
648
- public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
649
- {
650
- $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
651
- $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
652
-
653
- return self::mb_strrpos($haystack, $needle, $offset, $encoding);
654
- }
655
-
656
- public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
657
- {
658
- $pos = strpos($haystack, $needle);
659
- if (false === $pos) {
660
- return false;
661
- }
662
- if ($part) {
663
- return substr($haystack, 0, $pos);
664
- }
665
-
666
- return substr($haystack, $pos);
667
- }
668
-
669
- public static function mb_get_info($type = 'all')
670
- {
671
- $info = array(
672
- 'internal_encoding' => self::$internalEncoding,
673
- 'http_output' => 'pass',
674
- 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
675
- 'func_overload' => 0,
676
- 'func_overload_list' => 'no overload',
677
- 'mail_charset' => 'UTF-8',
678
- 'mail_header_encoding' => 'BASE64',
679
- 'mail_body_encoding' => 'BASE64',
680
- 'illegal_chars' => 0,
681
- 'encoding_translation' => 'Off',
682
- 'language' => self::$language,
683
- 'detect_order' => self::$encodingList,
684
- 'substitute_character' => 'none',
685
- 'strict_detection' => 'Off',
686
- );
687
-
688
- if ('all' === $type) {
689
- return $info;
690
- }
691
- if (isset($info[$type])) {
692
- return $info[$type];
693
- }
694
-
695
- return false;
696
- }
697
-
698
- public static function mb_http_input($type = '')
699
- {
700
- return false;
701
- }
702
-
703
- public static function mb_http_output($encoding = null)
704
- {
705
- return null !== $encoding ? 'pass' === $encoding : 'pass';
706
- }
707
-
708
- public static function mb_strwidth($s, $encoding = null)
709
- {
710
- $encoding = self::getEncoding($encoding);
711
-
712
- if ('UTF-8' !== $encoding) {
713
- $s = iconv($encoding, 'UTF-8//IGNORE', $s);
714
- }
715
-
716
- $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
717
-
718
- return ($wide << 1) + iconv_strlen($s, 'UTF-8');
719
- }
720
-
721
- public static function mb_substr_count($haystack, $needle, $encoding = null)
722
- {
723
- return substr_count($haystack, $needle);
724
- }
725
-
726
- public static function mb_output_handler($contents, $status)
727
- {
728
- return $contents;
729
- }
730
-
731
- public static function mb_chr($code, $encoding = null)
732
- {
733
- if (0x80 > $code %= 0x200000) {
734
- $s = \chr($code);
735
- } elseif (0x800 > $code) {
736
- $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
737
- } elseif (0x10000 > $code) {
738
- $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
739
- } else {
740
- $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
741
- }
742
-
743
- if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
744
- $s = mb_convert_encoding($s, $encoding, 'UTF-8');
745
- }
746
-
747
- return $s;
748
- }
749
-
750
- public static function mb_ord($s, $encoding = null)
751
- {
752
- if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
753
- $s = mb_convert_encoding($s, 'UTF-8', $encoding);
754
- }
755
-
756
- if (1 === \strlen($s)) {
757
- return \ord($s);
758
- }
759
-
760
- $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
761
- if (0xF0 <= $code) {
762
- return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
763
- }
764
- if (0xE0 <= $code) {
765
- return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
766
- }
767
- if (0xC0 <= $code) {
768
- return (($code - 0xC0) << 6) + $s[2] - 0x80;
769
- }
770
-
771
- return $code;
772
- }
773
-
774
- private static function getSubpart($pos, $part, $haystack, $encoding)
775
- {
776
- if (false === $pos) {
777
- return false;
778
- }
779
- if ($part) {
780
- return self::mb_substr($haystack, 0, $pos, $encoding);
781
- }
782
-
783
- return self::mb_substr($haystack, $pos, null, $encoding);
784
- }
785
-
786
- private static function html_encoding_callback(array $m)
787
- {
788
- $i = 1;
789
- $entities = '';
790
- $m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8'));
791
-
792
- while (isset($m[$i])) {
793
- if (0x80 > $m[$i]) {
794
- $entities .= \chr($m[$i++]);
795
- continue;
796
- }
797
- if (0xF0 <= $m[$i]) {
798
- $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
799
- } elseif (0xE0 <= $m[$i]) {
800
- $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
801
- } else {
802
- $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
803
- }
804
-
805
- $entities .= '&#'.$c.';';
806
- }
807
-
808
- return $entities;
809
- }
810
-
811
- private static function title_case(array $s)
812
- {
813
- return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8');
814
- }
815
-
816
- private static function getData($file)
817
- {
818
- if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
819
- return require $file;
820
- }
821
-
822
- return false;
823
- }
824
-
825
- private static function getEncoding($encoding)
826
- {
827
- if (null === $encoding) {
828
- return self::$internalEncoding;
829
- }
830
-
831
- if ('UTF-8' === $encoding) {
832
- return 'UTF-8';
833
- }
834
-
835
- $encoding = strtoupper($encoding);
836
-
837
- if ('8BIT' === $encoding || 'BINARY' === $encoding) {
838
- return 'CP850';
839
- }
840
-
841
- if ('UTF8' === $encoding) {
842
- return 'UTF-8';
843
- }
844
-
845
- return $encoding;
846
- }
847
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php DELETED
@@ -1,1096 +0,0 @@
1
- <?php
2
-
3
- return array(
4
- 'A' => 'a',
5
- 'B' => 'b',
6
- 'C' => 'c',
7
- 'D' => 'd',
8
- 'E' => 'e',
9
- 'F' => 'f',
10
- 'G' => 'g',
11
- 'H' => 'h',
12
- 'I' => 'i',
13
- 'J' => 'j',
14
- 'K' => 'k',
15
- 'L' => 'l',
16
- 'M' => 'm',
17
- 'N' => 'n',
18
- 'O' => 'o',
19
- 'P' => 'p',
20
- 'Q' => 'q',
21
- 'R' => 'r',
22
- 'S' => 's',
23
- 'T' => 't',
24
- 'U' => 'u',
25
- 'V' => 'v',
26
- 'W' => 'w',
27
- 'X' => 'x',
28
- 'Y' => 'y',
29
- 'Z' => 'z',
30
- 'À' => 'à',
31
- 'Á' => 'á',
32
- 'Â' => 'â',
33
- 'Ã' => 'ã',
34
- 'Ä' => 'ä',
35
- 'Å' => 'å',
36
- 'Æ' => 'æ',
37
- 'Ç' => 'ç',
38
- 'È' => 'è',
39
- 'É' => 'é',
40
- 'Ê' => 'ê',
41
- 'Ë' => 'ë',
42
- 'Ì' => 'ì',
43
- 'Í' => 'í',
44
- 'Î' => 'î',
45
- 'Ï' => 'ï',
46
- 'Ð' => 'ð',
47
- 'Ñ' => 'ñ',
48
- 'Ò' => 'ò',
49
- 'Ó' => 'ó',
50
- 'Ô' => 'ô',
51
- 'Õ' => 'õ',
52
- 'Ö' => 'ö',
53
- 'Ø' => 'ø',
54
- 'Ù' => 'ù',
55
- 'Ú' => 'ú',
56
- 'Û' => 'û',
57
- 'Ü' => 'ü',
58
- 'Ý' => 'ý',
59
- 'Þ' => 'þ',
60
- 'Ā' => 'ā',
61
- 'Ă' => 'ă',
62
- 'Ą' => 'ą',
63
- 'Ć' => 'ć',
64
- 'Ĉ' => 'ĉ',
65
- 'Ċ' => 'ċ',
66
- 'Č' => 'č',
67
- 'Ď' => 'ď',
68
- 'Đ' => 'đ',
69
- 'Ē' => 'ē',
70
- 'Ĕ' => 'ĕ',
71
- 'Ė' => 'ė',
72
- 'Ę' => 'ę',
73
- 'Ě' => 'ě',
74
- 'Ĝ' => 'ĝ',
75
- 'Ğ' => 'ğ',
76
- 'Ġ' => 'ġ',
77
- 'Ģ' => 'ģ',
78
- 'Ĥ' => 'ĥ',
79
- 'Ħ' => 'ħ',
80
- 'Ĩ' => 'ĩ',
81
- 'Ī' => 'ī',
82
- 'Ĭ' => 'ĭ',
83
- 'Į' => 'į',
84
- 'İ' => 'i',
85
- 'IJ' => 'ij',
86
- 'Ĵ' => 'ĵ',
87
- 'Ķ' => 'ķ',
88
- 'Ĺ' => 'ĺ',
89
- 'Ļ' => 'ļ',
90
- 'Ľ' => 'ľ',
91
- 'Ŀ' => 'ŀ',
92
- 'Ł' => 'ł',
93
- 'Ń' => 'ń',
94
- 'Ņ' => 'ņ',
95
- 'Ň' => 'ň',
96
- 'Ŋ' => 'ŋ',
97
- 'Ō' => 'ō',
98
- 'Ŏ' => 'ŏ',
99
- 'Ő' => 'ő',
100
- 'Œ' => 'œ',
101
- 'Ŕ' => 'ŕ',
102
- 'Ŗ' => 'ŗ',
103
- 'Ř' => 'ř',
104
- 'Ś' => 'ś',
105
- 'Ŝ' => 'ŝ',
106
- 'Ş' => 'ş',
107
- 'Š' => 'š',
108
- 'Ţ' => 'ţ',
109
- 'Ť' => 'ť',
110
- 'Ŧ' => 'ŧ',
111
- 'Ũ' => 'ũ',
112
- 'Ū' => 'ū',
113
- 'Ŭ' => 'ŭ',
114
- 'Ů' => 'ů',
115
- 'Ű' => 'ű',
116
- 'Ų' => 'ų',
117
- 'Ŵ' => 'ŵ',
118
- 'Ŷ' => 'ŷ',
119
- 'Ÿ' => 'ÿ',
120
- 'Ź' => 'ź',
121
- 'Ż' => 'ż',
122
- 'Ž' => 'ž',
123
- 'Ɓ' => 'ɓ',
124
- 'Ƃ' => 'ƃ',
125
- 'Ƅ' => 'ƅ',
126
- 'Ɔ' => 'ɔ',
127
- 'Ƈ' => 'ƈ',
128
- 'Ɖ' => 'ɖ',
129
- 'Ɗ' => 'ɗ',
130
- 'Ƌ' => 'ƌ',
131
- 'Ǝ' => 'ǝ',
132
- 'Ə' => 'ə',
133
- 'Ɛ' => 'ɛ',
134
- 'Ƒ' => 'ƒ',
135
- 'Ɠ' => 'ɠ',
136
- 'Ɣ' => 'ɣ',
137
- 'Ɩ' => 'ɩ',
138
- 'Ɨ' => 'ɨ',
139
- 'Ƙ' => 'ƙ',
140
- 'Ɯ' => 'ɯ',
141
- 'Ɲ' => 'ɲ',
142
- 'Ɵ' => 'ɵ',
143
- 'Ơ' => 'ơ',
144
- 'Ƣ' => 'ƣ',
145
- 'Ƥ' => 'ƥ',
146
- 'Ʀ' => 'ʀ',
147
- 'Ƨ' => 'ƨ',
148
- 'Ʃ' => 'ʃ',
149
- 'Ƭ' => 'ƭ',
150
- 'Ʈ' => 'ʈ',
151
- 'Ư' => 'ư',
152
- 'Ʊ' => 'ʊ',
153
- 'Ʋ' => 'ʋ',
154
- 'Ƴ' => 'ƴ',
155
- 'Ƶ' => 'ƶ',
156
- 'Ʒ' => 'ʒ',
157
- 'Ƹ' => 'ƹ',
158
- 'Ƽ' => 'ƽ',
159
- 'DŽ' => 'dž',
160
- 'Dž' => 'dž',
161
- 'LJ' => 'lj',
162
- 'Lj' => 'lj',
163
- 'NJ' => 'nj',
164
- 'Nj' => 'nj',
165
- 'Ǎ' => 'ǎ',
166
- 'Ǐ' => 'ǐ',
167
- 'Ǒ' => 'ǒ',
168
- 'Ǔ' => 'ǔ',
169
- 'Ǖ' => 'ǖ',
170
- 'Ǘ' => 'ǘ',
171
- 'Ǚ' => 'ǚ',
172
- 'Ǜ' => 'ǜ',
173
- 'Ǟ' => 'ǟ',
174
- 'Ǡ' => 'ǡ',
175
- 'Ǣ' => 'ǣ',
176
- 'Ǥ' => 'ǥ',
177
- 'Ǧ' => 'ǧ',
178
- 'Ǩ' => 'ǩ',
179
- 'Ǫ' => 'ǫ',
180
- 'Ǭ' => 'ǭ',
181
- 'Ǯ' => 'ǯ',
182
- 'DZ' => 'dz',
183
- 'Dz' => 'dz',
184
- 'Ǵ' => 'ǵ',
185
- 'Ƕ' => 'ƕ',
186
- 'Ƿ' => 'ƿ',
187
- 'Ǹ' => 'ǹ',
188
- 'Ǻ' => 'ǻ',
189
- 'Ǽ' => 'ǽ',
190
- 'Ǿ' => 'ǿ',
191
- 'Ȁ' => 'ȁ',
192
- 'Ȃ' => 'ȃ',
193
- 'Ȅ' => 'ȅ',
194
- 'Ȇ' => 'ȇ',
195
- 'Ȉ' => 'ȉ',
196
- 'Ȋ' => 'ȋ',
197
- 'Ȍ' => 'ȍ',
198
- 'Ȏ' => 'ȏ',
199
- 'Ȑ' => 'ȑ',
200
- 'Ȓ' => 'ȓ',
201
- 'Ȕ' => 'ȕ',
202
- 'Ȗ' => 'ȗ',
203
- 'Ș' => 'ș',
204
- 'Ț' => 'ț',
205
- 'Ȝ' => 'ȝ',
206
- 'Ȟ' => 'ȟ',
207
- 'Ƞ' => 'ƞ',
208
- 'Ȣ' => 'ȣ',
209
- 'Ȥ' => 'ȥ',
210
- 'Ȧ' => 'ȧ',
211
- 'Ȩ' => 'ȩ',
212
- 'Ȫ' => 'ȫ',
213
- 'Ȭ' => 'ȭ',
214
- 'Ȯ' => 'ȯ',
215
- 'Ȱ' => 'ȱ',
216
- 'Ȳ' => 'ȳ',
217
- 'Ⱥ' => 'ⱥ',
218
- 'Ȼ' => 'ȼ',
219
- 'Ƚ' => 'ƚ',
220
- 'Ⱦ' => 'ⱦ',
221
- 'Ɂ' => 'ɂ',
222
- 'Ƀ' => 'ƀ',
223
- 'Ʉ' => 'ʉ',
224
- 'Ʌ' => 'ʌ',
225
- 'Ɇ' => 'ɇ',
226
- 'Ɉ' => 'ɉ',
227
- 'Ɋ' => 'ɋ',
228
- 'Ɍ' => 'ɍ',
229
- 'Ɏ' => 'ɏ',
230
- 'Ͱ' => 'ͱ',
231
- 'Ͳ' => 'ͳ',
232
- 'Ͷ' => 'ͷ',
233
- 'Ϳ' => 'ϳ',
234
- 'Ά' => 'ά',
235
- 'Έ' => 'έ',
236
- 'Ή' => 'ή',
237
- 'Ί' => 'ί',
238
- 'Ό' => 'ό',
239
- 'Ύ' => 'ύ',
240
- 'Ώ' => 'ώ',
241
- 'Α' => 'α',
242
- 'Β' => 'β',
243
- 'Γ' => 'γ',
244
- 'Δ' => 'δ',
245
- 'Ε' => 'ε',
246
- 'Ζ' => 'ζ',
247
- 'Η' => 'η',
248
- 'Θ' => 'θ',
249
- 'Ι' => 'ι',
250
- 'Κ' => 'κ',
251
- 'Λ' => 'λ',
252
- 'Μ' => 'μ',
253
- 'Ν' => 'ν',
254
- 'Ξ' => 'ξ',
255
- 'Ο' => 'ο',
256
- 'Π' => 'π',
257
- 'Ρ' => 'ρ',
258
- 'Σ' => 'σ',
259
- 'Τ' => 'τ',
260
- 'Υ' => 'υ',
261
- 'Φ' => 'φ',
262
- 'Χ' => 'χ',
263
- 'Ψ' => 'ψ',
264
- 'Ω' => 'ω',
265
- 'Ϊ' => 'ϊ',
266
- 'Ϋ' => 'ϋ',
267
- 'Ϗ' => 'ϗ',
268
- 'Ϙ' => 'ϙ',
269
- 'Ϛ' => 'ϛ',
270
- 'Ϝ' => 'ϝ',
271
- 'Ϟ' => 'ϟ',
272
- 'Ϡ' => 'ϡ',
273
- 'Ϣ' => 'ϣ',
274
- 'Ϥ' => 'ϥ',
275
- 'Ϧ' => 'ϧ',
276
- 'Ϩ' => 'ϩ',
277
- 'Ϫ' => 'ϫ',
278
- 'Ϭ' => 'ϭ',
279
- 'Ϯ' => 'ϯ',
280
- 'ϴ' => 'θ',
281
- 'Ϸ' => 'ϸ',
282
- 'Ϲ' => 'ϲ',
283
- 'Ϻ' => 'ϻ',
284
- 'Ͻ' => 'ͻ',
285
- 'Ͼ' => 'ͼ',
286
- 'Ͽ' => 'ͽ',
287
- 'Ѐ' => 'ѐ',
288
- 'Ё' => 'ё',
289
- 'Ђ' => 'ђ',
290
- 'Ѓ' => 'ѓ',
291
- 'Є' => 'є',
292
- 'Ѕ' => 'ѕ',
293
- 'І' => 'і',
294
- 'Ї' => 'ї',
295
- 'Ј' => 'ј',
296
- 'Љ' => 'љ',
297
- 'Њ' => 'њ',
298
- 'Ћ' => 'ћ',
299
- 'Ќ' => 'ќ',
300
- 'Ѝ' => 'ѝ',
301
- 'Ў' => 'ў',
302
- 'Џ' => 'џ',
303
- 'А' => 'а',
304
- 'Б' => 'б',
305
- 'В' => 'в',
306
- 'Г' => 'г',
307
- 'Д' => 'д',
308
- 'Е' => 'е',
309
- 'Ж' => 'ж',
310
- 'З' => 'з',
311
- 'И' => 'и',
312
- 'Й' => 'й',
313
- 'К' => 'к',
314
- 'Л' => 'л',
315
- 'М' => 'м',
316
- 'Н' => 'н',
317
- 'О' => 'о',
318
- 'П' => 'п',
319
- 'Р' => 'р',
320
- 'С' => 'с',
321
- 'Т' => 'т',
322
- 'У' => 'у',
323
- 'Ф' => 'ф',
324
- 'Х' => 'х',
325
- 'Ц' => 'ц',
326
- 'Ч' => 'ч',
327
- 'Ш' => 'ш',
328
- 'Щ' => 'щ',
329
- 'Ъ' => 'ъ',
330
- 'Ы' => 'ы',
331
- 'Ь' => 'ь',
332
- 'Э' => 'э',
333
- 'Ю' => 'ю',
334
- 'Я' => 'я',
335
- 'Ѡ' => 'ѡ',
336
- 'Ѣ' => 'ѣ',
337
- 'Ѥ' => 'ѥ',
338
- 'Ѧ' => 'ѧ',
339
- 'Ѩ' => 'ѩ',
340
- 'Ѫ' => 'ѫ',
341
- 'Ѭ' => 'ѭ',
342
- 'Ѯ' => 'ѯ',
343
- 'Ѱ' => 'ѱ',
344
- 'Ѳ' => 'ѳ',
345
- 'Ѵ' => 'ѵ',
346
- 'Ѷ' => 'ѷ',
347
- 'Ѹ' => 'ѹ',
348
- 'Ѻ' => 'ѻ',
349
- 'Ѽ' => 'ѽ',
350
- 'Ѿ' => 'ѿ',
351
- 'Ҁ' => 'ҁ',
352
- 'Ҋ' => 'ҋ',
353
- 'Ҍ' => 'ҍ',
354
- 'Ҏ' => 'ҏ',
355
- 'Ґ' => 'ґ',
356
- 'Ғ' => 'ғ',
357
- 'Ҕ' => 'ҕ',
358
- 'Җ' => 'җ',
359
- 'Ҙ' => 'ҙ',
360
- 'Қ' => 'қ',
361
- 'Ҝ' => 'ҝ',
362
- 'Ҟ' => 'ҟ',
363
- 'Ҡ' => 'ҡ',
364
- 'Ң' => 'ң',
365
- 'Ҥ' => 'ҥ',
366
- 'Ҧ' => 'ҧ',
367
- 'Ҩ' => 'ҩ',
368
- 'Ҫ' => 'ҫ',
369
- 'Ҭ' => 'ҭ',
370
- 'Ү' => 'ү',
371
- 'Ұ' => 'ұ',
372
- 'Ҳ' => 'ҳ',
373
- 'Ҵ' => 'ҵ',
374
- 'Ҷ' => 'ҷ',
375
- 'Ҹ' => 'ҹ',
376
- 'Һ' => 'һ',
377
- 'Ҽ' => 'ҽ',
378
- 'Ҿ' => 'ҿ',
379
- 'Ӏ' => 'ӏ',
380
- 'Ӂ' => 'ӂ',
381
- 'Ӄ' => 'ӄ',
382
- 'Ӆ' => 'ӆ',
383
- 'Ӈ' => 'ӈ',
384
- 'Ӊ' => 'ӊ',
385
- 'Ӌ' => 'ӌ',
386
- 'Ӎ' => 'ӎ',
387
- 'Ӑ' => 'ӑ',
388
- 'Ӓ' => 'ӓ',
389
- 'Ӕ' => 'ӕ',
390
- 'Ӗ' => 'ӗ',
391
- 'Ә' => 'ә',
392
- 'Ӛ' => 'ӛ',
393
- 'Ӝ' => 'ӝ',
394
- 'Ӟ' => 'ӟ',
395
- 'Ӡ' => 'ӡ',
396
- 'Ӣ' => 'ӣ',
397
- 'Ӥ' => 'ӥ',
398
- 'Ӧ' => 'ӧ',
399
- 'Ө' => 'ө',
400
- 'Ӫ' => 'ӫ',
401
- 'Ӭ' => 'ӭ',
402
- 'Ӯ' => 'ӯ',
403
- 'Ӱ' => 'ӱ',
404
- 'Ӳ' => 'ӳ',
405
- 'Ӵ' => 'ӵ',
406
- 'Ӷ' => 'ӷ',
407
- 'Ӹ' => 'ӹ',
408
- 'Ӻ' => 'ӻ',
409
- 'Ӽ' => 'ӽ',
410
- 'Ӿ' => 'ӿ',
411
- 'Ԁ' => 'ԁ',
412
- 'Ԃ' => 'ԃ',
413
- 'Ԅ' => 'ԅ',
414
- 'Ԇ' => 'ԇ',
415
- 'Ԉ' => 'ԉ',
416
- 'Ԋ' => 'ԋ',
417
- 'Ԍ' => 'ԍ',
418
- 'Ԏ' => 'ԏ',
419
- 'Ԑ' => 'ԑ',
420
- 'Ԓ' => 'ԓ',
421
- 'Ԕ' => 'ԕ',
422
- 'Ԗ' => 'ԗ',
423
- 'Ԙ' => 'ԙ',
424
- 'Ԛ' => 'ԛ',
425
- 'Ԝ' => 'ԝ',
426
- 'Ԟ' => 'ԟ',
427
- 'Ԡ' => 'ԡ',
428
- 'Ԣ' => 'ԣ',
429
- 'Ԥ' => 'ԥ',
430
- 'Ԧ' => 'ԧ',
431
- 'Ԩ' => 'ԩ',
432
- 'Ԫ' => 'ԫ',
433
- 'Ԭ' => 'ԭ',
434
- 'Ԯ' => 'ԯ',
435
- 'Ա' => 'ա',
436
- 'Բ' => 'բ',
437
- 'Գ' => 'գ',
438
- 'Դ' => 'դ',
439
- 'Ե' => 'ե',
440
- 'Զ' => 'զ',
441
- 'Է' => 'է',
442
- 'Ը' => 'ը',
443
- 'Թ' => 'թ',
444
- 'Ժ' => 'ժ',
445
- 'Ի' => 'ի',
446
- 'Լ' => 'լ',
447
- 'Խ' => 'խ',
448
- 'Ծ' => 'ծ',
449
- 'Կ' => 'կ',
450
- 'Հ' => 'հ',
451
- 'Ձ' => 'ձ',
452
- 'Ղ' => 'ղ',
453
- 'Ճ' => 'ճ',
454
- 'Մ' => 'մ',
455
- 'Յ' => 'յ',
456
- 'Ն' => 'ն',
457
- 'Շ' => 'շ',
458
- 'Ո' => 'ո',
459
- 'Չ' => 'չ',
460
- 'Պ' => 'պ',
461
- 'Ջ' => 'ջ',
462
- 'Ռ' => 'ռ',
463
- 'Ս' => 'ս',
464
- 'Վ' => 'վ',
465
- 'Տ' => 'տ',
466
- 'Ր' => 'ր',
467
- 'Ց' => 'ց',
468
- 'Ւ' => 'ւ',
469
- 'Փ' => 'փ',
470
- 'Ք' => 'ք',
471
- 'Օ' => 'օ',
472
- 'Ֆ' => 'ֆ',
473
- 'Ⴀ' => 'ⴀ',
474
- 'Ⴁ' => 'ⴁ',
475
- 'Ⴂ' => 'ⴂ',
476
- 'Ⴃ' => 'ⴃ',
477
- 'Ⴄ' => 'ⴄ',
478
- 'Ⴅ' => 'ⴅ',
479
- 'Ⴆ' => 'ⴆ',
480
- 'Ⴇ' => 'ⴇ',
481
- 'Ⴈ' => 'ⴈ',
482
- 'Ⴉ' => 'ⴉ',
483
- 'Ⴊ' => 'ⴊ',
484
- 'Ⴋ' => 'ⴋ',
485
- 'Ⴌ' => 'ⴌ',
486
- 'Ⴍ' => 'ⴍ',
487
- 'Ⴎ' => 'ⴎ',
488
- 'Ⴏ' => 'ⴏ',
489
- 'Ⴐ' => 'ⴐ',
490
- 'Ⴑ' => 'ⴑ',
491
- 'Ⴒ' => 'ⴒ',
492
- 'Ⴓ' => 'ⴓ',
493
- 'Ⴔ' => 'ⴔ',
494
- 'Ⴕ' => 'ⴕ',
495
- 'Ⴖ' => 'ⴖ',
496
- 'Ⴗ' => 'ⴗ',
497
- 'Ⴘ' => 'ⴘ',
498
- 'Ⴙ' => 'ⴙ',
499
- 'Ⴚ' => 'ⴚ',
500
- 'Ⴛ' => 'ⴛ',
501
- 'Ⴜ' => 'ⴜ',
502
- 'Ⴝ' => 'ⴝ',
503
- 'Ⴞ' => 'ⴞ',
504
- 'Ⴟ' => 'ⴟ',
505
- 'Ⴠ' => 'ⴠ',
506
- 'Ⴡ' => 'ⴡ',
507
- 'Ⴢ' => 'ⴢ',
508
- 'Ⴣ' => 'ⴣ',
509
- 'Ⴤ' => 'ⴤ',
510
- 'Ⴥ' => 'ⴥ',
511
- 'Ⴧ' => 'ⴧ',
512
- 'Ⴭ' => 'ⴭ',
513
- 'Ḁ' => 'ḁ',
514
- 'Ḃ' => 'ḃ',
515
- 'Ḅ' => 'ḅ',
516
- 'Ḇ' => 'ḇ',
517
- 'Ḉ' => 'ḉ',
518
- 'Ḋ' => 'ḋ',
519
- 'Ḍ' => 'ḍ',
520
- 'Ḏ' => 'ḏ',
521
- 'Ḑ' => 'ḑ',
522
- 'Ḓ' => 'ḓ',
523
- 'Ḕ' => 'ḕ',
524
- 'Ḗ' => 'ḗ',
525
- 'Ḙ' => 'ḙ',
526
- 'Ḛ' => 'ḛ',
527
- 'Ḝ' => 'ḝ',
528
- 'Ḟ' => 'ḟ',
529
- 'Ḡ' => 'ḡ',
530
- 'Ḣ' => 'ḣ',
531
- 'Ḥ' => 'ḥ',
532
- 'Ḧ' => 'ḧ',
533
- 'Ḩ' => 'ḩ',
534
- 'Ḫ' => 'ḫ',
535
- 'Ḭ' => 'ḭ',
536
- 'Ḯ' => 'ḯ',
537
- 'Ḱ' => 'ḱ',
538
- 'Ḳ' => 'ḳ',
539
- 'Ḵ' => 'ḵ',
540
- 'Ḷ' => 'ḷ',
541
- 'Ḹ' => 'ḹ',
542
- 'Ḻ' => 'ḻ',
543
- 'Ḽ' => 'ḽ',
544
- 'Ḿ' => 'ḿ',
545
- 'Ṁ' => 'ṁ',
546
- 'Ṃ' => 'ṃ',
547
- 'Ṅ' => 'ṅ',
548
- 'Ṇ' => 'ṇ',
549
- 'Ṉ' => 'ṉ',
550
- 'Ṋ' => 'ṋ',
551
- 'Ṍ' => 'ṍ',
552
- 'Ṏ' => 'ṏ',
553
- 'Ṑ' => 'ṑ',
554
- 'Ṓ' => 'ṓ',
555
- 'Ṕ' => 'ṕ',
556
- 'Ṗ' => 'ṗ',
557
- 'Ṙ' => 'ṙ',
558
- 'Ṛ' => 'ṛ',
559
- 'Ṝ' => 'ṝ',
560
- 'Ṟ' => 'ṟ',
561
- 'Ṡ' => 'ṡ',
562
- 'Ṣ' => 'ṣ',
563
- 'Ṥ' => 'ṥ',
564
- 'Ṧ' => 'ṧ',
565
- 'Ṩ' => 'ṩ',
566
- 'Ṫ' => 'ṫ',
567
- 'Ṭ' => 'ṭ',
568
- 'Ṯ' => 'ṯ',
569
- 'Ṱ' => 'ṱ',
570
- 'Ṳ' => 'ṳ',
571
- 'Ṵ' => 'ṵ',
572
- 'Ṷ' => 'ṷ',
573
- 'Ṹ' => 'ṹ',
574
- 'Ṻ' => 'ṻ',
575
- 'Ṽ' => 'ṽ',
576
- 'Ṿ' => 'ṿ',
577
- 'Ẁ' => 'ẁ',
578
- 'Ẃ' => 'ẃ',
579
- 'Ẅ' => 'ẅ',
580
- 'Ẇ' => 'ẇ',
581
- 'Ẉ' => 'ẉ',
582
- 'Ẋ' => 'ẋ',
583
- 'Ẍ' => 'ẍ',
584
- 'Ẏ' => 'ẏ',
585
- 'Ẑ' => 'ẑ',
586
- 'Ẓ' => 'ẓ',
587
- 'Ẕ' => 'ẕ',
588
- 'ẞ' => 'ß',
589
- 'Ạ' => 'ạ',
590
- 'Ả' => 'ả',
591
- 'Ấ' => 'ấ',
592
- 'Ầ' => 'ầ',
593
- 'Ẩ' => 'ẩ',
594
- 'Ẫ' => 'ẫ',
595
- 'Ậ' => 'ậ',
596
- 'Ắ' => 'ắ',
597
- 'Ằ' => 'ằ',
598
- 'Ẳ' => 'ẳ',
599
- 'Ẵ' => 'ẵ',
600
- 'Ặ' => 'ặ',
601
- 'Ẹ' => 'ẹ',
602
- 'Ẻ' => 'ẻ',
603
- 'Ẽ' => 'ẽ',
604
- 'Ế' => 'ế',
605
- 'Ề' => 'ề',
606
- 'Ể' => 'ể',
607
- 'Ễ' => 'ễ',
608
- 'Ệ' => 'ệ',
609
- 'Ỉ' => 'ỉ',
610
- 'Ị' => 'ị',
611
- 'Ọ' => 'ọ',
612
- 'Ỏ' => 'ỏ',
613
- 'Ố' => 'ố',
614
- 'Ồ' => 'ồ',
615
- 'Ổ' => 'ổ',
616
- 'Ỗ' => 'ỗ',
617
- 'Ộ' => 'ộ',
618
- 'Ớ' => 'ớ',
619
- 'Ờ' => 'ờ',
620
- 'Ở' => 'ở',
621
- 'Ỡ' => 'ỡ',
622
- 'Ợ' => 'ợ',
623
- 'Ụ' => 'ụ',
624
- 'Ủ' => 'ủ',
625
- 'Ứ' => 'ứ',
626
- 'Ừ' => 'ừ',
627
- 'Ử' => 'ử',
628
- 'Ữ' => 'ữ',
629
- 'Ự' => 'ự',
630
- 'Ỳ' => 'ỳ',
631
- 'Ỵ' => 'ỵ',
632
- 'Ỷ' => 'ỷ',
633
- 'Ỹ' => 'ỹ',
634
- 'Ỻ' => 'ỻ',
635
- 'Ỽ' => 'ỽ',
636
- 'Ỿ' => 'ỿ',
637
- 'Ἀ' => 'ἀ',
638
- 'Ἁ' => 'ἁ',
639
- 'Ἂ' => 'ἂ',
640
- 'Ἃ' => 'ἃ',
641
- 'Ἄ' => 'ἄ',
642
- 'Ἅ' => 'ἅ',
643
- 'Ἆ' => 'ἆ',
644
- 'Ἇ' => 'ἇ',
645
- 'Ἐ' => 'ἐ',
646
- 'Ἑ' => 'ἑ',
647
- 'Ἒ' => 'ἒ',
648
- 'Ἓ' => 'ἓ',
649
- 'Ἔ' => 'ἔ',
650
- 'Ἕ' => 'ἕ',
651
- 'Ἠ' => 'ἠ',
652
- 'Ἡ' => 'ἡ',
653
- 'Ἢ' => 'ἢ',
654
- 'Ἣ' => 'ἣ',
655
- 'Ἤ' => 'ἤ',
656
- 'Ἥ' => 'ἥ',
657
- 'Ἦ' => 'ἦ',
658
- 'Ἧ' => 'ἧ',
659
- 'Ἰ' => 'ἰ',
660
- 'Ἱ' => 'ἱ',
661
- 'Ἲ' => 'ἲ',
662
- 'Ἳ' => 'ἳ',
663
- 'Ἴ' => 'ἴ',
664
- 'Ἵ' => 'ἵ',
665
- 'Ἶ' => 'ἶ',
666
- 'Ἷ' => 'ἷ',
667
- 'Ὀ' => 'ὀ',
668
- 'Ὁ' => 'ὁ',
669
- 'Ὂ' => 'ὂ',
670
- 'Ὃ' => 'ὃ',
671
- 'Ὄ' => 'ὄ',
672
- 'Ὅ' => 'ὅ',
673
- 'Ὑ' => 'ὑ',
674
- 'Ὓ' => 'ὓ',
675
- 'Ὕ' => 'ὕ',
676
- 'Ὗ' => 'ὗ',
677
- 'Ὠ' => 'ὠ',
678
- 'Ὡ' => 'ὡ',
679
- 'Ὢ' => 'ὢ',
680
- 'Ὣ' => 'ὣ',
681
- 'Ὤ' => 'ὤ',
682
- 'Ὥ' => 'ὥ',
683
- 'Ὦ' => 'ὦ',
684
- 'Ὧ' => 'ὧ',
685
- 'ᾈ' => 'ᾀ',
686
- 'ᾉ' => 'ᾁ',
687
- 'ᾊ' => 'ᾂ',
688
- 'ᾋ' => 'ᾃ',
689
- 'ᾌ' => 'ᾄ',
690
- 'ᾍ' => 'ᾅ',
691
- 'ᾎ' => 'ᾆ',
692
- 'ᾏ' => 'ᾇ',
693
- 'ᾘ' => 'ᾐ',
694
- 'ᾙ' => 'ᾑ',
695
- 'ᾚ' => 'ᾒ',
696
- 'ᾛ' => 'ᾓ',
697
- 'ᾜ' => 'ᾔ',
698
- 'ᾝ' => 'ᾕ',
699
- 'ᾞ' => 'ᾖ',
700
- 'ᾟ' => 'ᾗ',
701
- 'ᾨ' => 'ᾠ',
702
- 'ᾩ' => 'ᾡ',
703
- 'ᾪ' => 'ᾢ',
704
- 'ᾫ' => 'ᾣ',
705
- 'ᾬ' => 'ᾤ',
706
- 'ᾭ' => 'ᾥ',
707
- 'ᾮ' => 'ᾦ',
708
- 'ᾯ' => 'ᾧ',
709
- 'Ᾰ' => 'ᾰ',
710
- 'Ᾱ' => 'ᾱ',
711
- 'Ὰ' => 'ὰ',
712
- 'Ά' => 'ά',
713
- 'ᾼ' => 'ᾳ',
714
- 'Ὲ' => 'ὲ',
715
- 'Έ' => 'έ',
716
- 'Ὴ' => 'ὴ',
717
- 'Ή' => 'ή',
718
- 'ῌ' => 'ῃ',
719
- 'Ῐ' => 'ῐ',
720
- 'Ῑ' => 'ῑ',
721
- 'Ὶ' => 'ὶ',
722
- 'Ί' => 'ί',
723
- 'Ῠ' => 'ῠ',
724
- 'Ῡ' => 'ῡ',
725
- 'Ὺ' => 'ὺ',
726
- 'Ύ' => 'ύ',
727
- 'Ῥ' => 'ῥ',
728
- 'Ὸ' => 'ὸ',
729
- 'Ό' => 'ό',
730
- 'Ὼ' => 'ὼ',
731
- 'Ώ' => 'ώ',
732
- 'ῼ' => 'ῳ',
733
- 'Ω' => 'ω',
734
- 'K' => 'k',
735
- 'Å' => 'å',
736
- 'Ⅎ' => 'ⅎ',
737
- 'Ⅰ' => 'ⅰ',
738
- 'Ⅱ' => 'ⅱ',
739
- 'Ⅲ' => 'ⅲ',
740
- 'Ⅳ' => 'ⅳ',
741
- 'Ⅴ' => 'ⅴ',
742
- 'Ⅵ' => 'ⅵ',
743
- 'Ⅶ' => 'ⅶ',
744
- 'Ⅷ' => 'ⅷ',
745
- 'Ⅸ' => 'ⅸ',
746
- 'Ⅹ' => 'ⅹ',
747
- 'Ⅺ' => 'ⅺ',
748
- 'Ⅻ' => 'ⅻ',
749
- 'Ⅼ' => 'ⅼ',
750
- 'Ⅽ' => 'ⅽ',
751
- 'Ⅾ' => 'ⅾ',
752
- 'Ⅿ' => 'ⅿ',
753
- 'Ↄ' => 'ↄ',
754
- 'Ⓐ' => 'ⓐ',
755
- 'Ⓑ' => 'ⓑ',
756
- 'Ⓒ' => 'ⓒ',
757
- 'Ⓓ' => 'ⓓ',
758
- 'Ⓔ' => 'ⓔ',
759
- 'Ⓕ' => 'ⓕ',
760
- 'Ⓖ' => 'ⓖ',
761
- 'Ⓗ' => 'ⓗ',
762
- 'Ⓘ' => 'ⓘ',
763
- 'Ⓙ' => 'ⓙ',
764
- 'Ⓚ' => 'ⓚ',
765
- 'Ⓛ' => 'ⓛ',
766
- 'Ⓜ' => 'ⓜ',
767
- 'Ⓝ' => 'ⓝ',
768
- 'Ⓞ' => 'ⓞ',
769
- 'Ⓟ' => 'ⓟ',
770
- 'Ⓠ' => 'ⓠ',
771
- 'Ⓡ' => 'ⓡ',
772
- 'Ⓢ' => 'ⓢ',
773
- 'Ⓣ' => 'ⓣ',
774
- 'Ⓤ' => 'ⓤ',
775
- 'Ⓥ' => 'ⓥ',
776
- 'Ⓦ' => 'ⓦ',
777
- 'Ⓧ' => 'ⓧ',
778
- 'Ⓨ' => 'ⓨ',
779
- 'Ⓩ' => 'ⓩ',
780
- 'Ⰰ' => 'ⰰ',
781
- 'Ⰱ' => 'ⰱ',
782
- 'Ⰲ' => 'ⰲ',
783
- 'Ⰳ' => 'ⰳ',
784
- 'Ⰴ' => 'ⰴ',
785
- 'Ⰵ' => 'ⰵ',
786
- 'Ⰶ' => 'ⰶ',
787
- 'Ⰷ' => 'ⰷ',
788
- 'Ⰸ' => 'ⰸ',
789
- 'Ⰹ' => 'ⰹ',
790
- 'Ⰺ' => 'ⰺ',
791
- 'Ⰻ' => 'ⰻ',
792
- 'Ⰼ' => 'ⰼ',
793
- 'Ⰽ' => 'ⰽ',
794
- 'Ⰾ' => 'ⰾ',
795
- 'Ⰿ' => 'ⰿ',
796
- 'Ⱀ' => 'ⱀ',
797
- 'Ⱁ' => 'ⱁ',
798
- 'Ⱂ' => 'ⱂ',
799
- 'Ⱃ' => 'ⱃ',
800
- 'Ⱄ' => 'ⱄ',
801
- 'Ⱅ' => 'ⱅ',
802
- 'Ⱆ' => 'ⱆ',
803
- 'Ⱇ' => 'ⱇ',
804
- 'Ⱈ' => 'ⱈ',
805
- 'Ⱉ' => 'ⱉ',
806
- 'Ⱊ' => 'ⱊ',
807
- 'Ⱋ' => 'ⱋ',
808
- 'Ⱌ' => 'ⱌ',
809
- 'Ⱍ' => 'ⱍ',
810
- 'Ⱎ' => 'ⱎ',
811
- 'Ⱏ' => 'ⱏ',
812
- 'Ⱐ' => 'ⱐ',
813
- 'Ⱑ' => 'ⱑ',
814
- 'Ⱒ' => 'ⱒ',
815
- 'Ⱓ' => 'ⱓ',
816
- 'Ⱔ' => 'ⱔ',
817
- 'Ⱕ' => 'ⱕ',
818
- 'Ⱖ' => 'ⱖ',
819
- 'Ⱗ' => 'ⱗ',
820
- 'Ⱘ' => 'ⱘ',
821
- 'Ⱙ' => 'ⱙ',
822
- 'Ⱚ' => 'ⱚ',
823
- 'Ⱛ' => 'ⱛ',
824
- 'Ⱜ' => 'ⱜ',
825
- 'Ⱝ' => 'ⱝ',
826
- 'Ⱞ' => 'ⱞ',
827
- 'Ⱡ' => 'ⱡ',
828
- 'Ɫ' => 'ɫ',
829
- 'Ᵽ' => 'ᵽ',
830
- 'Ɽ' => 'ɽ',
831
- 'Ⱨ' => 'ⱨ',
832
- 'Ⱪ' => 'ⱪ',
833
- 'Ⱬ' => 'ⱬ',
834
- 'Ɑ' => 'ɑ',
835
- 'Ɱ' => 'ɱ',
836
- 'Ɐ' => 'ɐ',
837
- 'Ɒ' => 'ɒ',
838
- 'Ⱳ' => 'ⱳ',
839
- 'Ⱶ' => 'ⱶ',
840
- 'Ȿ' => 'ȿ',
841
- 'Ɀ' => 'ɀ',
842
- 'Ⲁ' => 'ⲁ',
843
- 'Ⲃ' => 'ⲃ',
844
- 'Ⲅ' => 'ⲅ',
845
- 'Ⲇ' => 'ⲇ',
846
- 'Ⲉ' => 'ⲉ',
847
- 'Ⲋ' => 'ⲋ',
848
- 'Ⲍ' => 'ⲍ',
849
- 'Ⲏ' => 'ⲏ',
850
- 'Ⲑ' => 'ⲑ',
851
- 'Ⲓ' => 'ⲓ',
852
- 'Ⲕ' => 'ⲕ',
853
- 'Ⲗ' => 'ⲗ',
854
- 'Ⲙ' => 'ⲙ',
855
- 'Ⲛ' => 'ⲛ',
856
- 'Ⲝ' => 'ⲝ',
857
- 'Ⲟ' => 'ⲟ',
858
- 'Ⲡ' => 'ⲡ',
859
- 'Ⲣ' => 'ⲣ',
860
- 'Ⲥ' => 'ⲥ',
861
- 'Ⲧ' => 'ⲧ',
862
- 'Ⲩ' => 'ⲩ',
863
- 'Ⲫ' => 'ⲫ',
864
- 'Ⲭ' => 'ⲭ',
865
- 'Ⲯ' => 'ⲯ',
866
- 'Ⲱ' => 'ⲱ',
867
- 'Ⲳ' => 'ⲳ',
868
- 'Ⲵ' => 'ⲵ',
869
- 'Ⲷ' => 'ⲷ',
870
- 'Ⲹ' => 'ⲹ',
871
- 'Ⲻ' => 'ⲻ',
872
- 'Ⲽ' => 'ⲽ',
873
- 'Ⲿ' => 'ⲿ',
874
- 'Ⳁ' => 'ⳁ',
875
- 'Ⳃ' => 'ⳃ',
876
- 'Ⳅ' => 'ⳅ',
877
- 'Ⳇ' => 'ⳇ',
878
- 'Ⳉ' => 'ⳉ',
879
- 'Ⳋ' => 'ⳋ',
880
- 'Ⳍ' => 'ⳍ',
881
- 'Ⳏ' => 'ⳏ',
882
- 'Ⳑ' => 'ⳑ',
883
- 'Ⳓ' => 'ⳓ',
884
- 'Ⳕ' => 'ⳕ',
885
- 'Ⳗ' => 'ⳗ',
886
- 'Ⳙ' => 'ⳙ',
887
- 'Ⳛ' => 'ⳛ',
888
- 'Ⳝ' => 'ⳝ',
889
- 'Ⳟ' => 'ⳟ',
890
- 'Ⳡ' => 'ⳡ',
891
- 'Ⳣ' => 'ⳣ',
892
- 'Ⳬ' => 'ⳬ',
893
- 'Ⳮ' => 'ⳮ',
894
- 'Ⳳ' => 'ⳳ',
895
- 'Ꙁ' => 'ꙁ',
896
- 'Ꙃ' => 'ꙃ',
897
- 'Ꙅ' => 'ꙅ',
898
- 'Ꙇ' => 'ꙇ',
899
- 'Ꙉ' => 'ꙉ',
900
- 'Ꙋ' => 'ꙋ',
901
- 'Ꙍ' => 'ꙍ',
902
- 'Ꙏ' => 'ꙏ',
903
- 'Ꙑ' => 'ꙑ',
904
- 'Ꙓ' => 'ꙓ',
905
- 'Ꙕ' => 'ꙕ',
906
- 'Ꙗ' => 'ꙗ',
907
- 'Ꙙ' => 'ꙙ',
908
- 'Ꙛ' => 'ꙛ',
909
- 'Ꙝ' => 'ꙝ',
910
- 'Ꙟ' => 'ꙟ',
911
- 'Ꙡ' => 'ꙡ',
912
- 'Ꙣ' => 'ꙣ',
913
- 'Ꙥ' => 'ꙥ',
914
- 'Ꙧ' => 'ꙧ',
915
- 'Ꙩ' => 'ꙩ',
916
- 'Ꙫ' => 'ꙫ',
917
- 'Ꙭ' => 'ꙭ',
918
- 'Ꚁ' => 'ꚁ',
919
- 'Ꚃ' => 'ꚃ',
920
- 'Ꚅ' => 'ꚅ',
921
- 'Ꚇ' => 'ꚇ',
922
- 'Ꚉ' => 'ꚉ',
923
- 'Ꚋ' => 'ꚋ',
924
- 'Ꚍ' => 'ꚍ',
925
- 'Ꚏ' => 'ꚏ',
926
- 'Ꚑ' => 'ꚑ',
927
- 'Ꚓ' => 'ꚓ',
928
- 'Ꚕ' => 'ꚕ',
929
- 'Ꚗ' => 'ꚗ',
930
- 'Ꚙ' => 'ꚙ',
931
- 'Ꚛ' => 'ꚛ',
932
- 'Ꜣ' => 'ꜣ',
933
- 'Ꜥ' => 'ꜥ',
934
- 'Ꜧ' => 'ꜧ',
935
- 'Ꜩ' => 'ꜩ',
936
- 'Ꜫ' => 'ꜫ',
937
- 'Ꜭ' => 'ꜭ',
938
- 'Ꜯ' => 'ꜯ',
939
- 'Ꜳ' => 'ꜳ',
940
- 'Ꜵ' => 'ꜵ',
941
- 'Ꜷ' => 'ꜷ',
942
- 'Ꜹ' => 'ꜹ',
943
- 'Ꜻ' => 'ꜻ',
944
- 'Ꜽ' => 'ꜽ',
945
- 'Ꜿ' => 'ꜿ',
946
- 'Ꝁ' => 'ꝁ',
947
- 'Ꝃ' => 'ꝃ',
948
- 'Ꝅ' => 'ꝅ',
949
- 'Ꝇ' => 'ꝇ',
950
- 'Ꝉ' => 'ꝉ',
951
- 'Ꝋ' => 'ꝋ',
952
- 'Ꝍ' => 'ꝍ',
953
- 'Ꝏ' => 'ꝏ',
954
- 'Ꝑ' => 'ꝑ',
955
- 'Ꝓ' => 'ꝓ',
956
- 'Ꝕ' => 'ꝕ',
957
- 'Ꝗ' => 'ꝗ',
958
- 'Ꝙ' => 'ꝙ',
959
- 'Ꝛ' => 'ꝛ',
960
- 'Ꝝ' => 'ꝝ',
961
- 'Ꝟ' => 'ꝟ',
962
- 'Ꝡ' => 'ꝡ',
963
- 'Ꝣ' => 'ꝣ',
964
- 'Ꝥ' => 'ꝥ',
965
- 'Ꝧ' => 'ꝧ',
966
- 'Ꝩ' => 'ꝩ',
967
- 'Ꝫ' => 'ꝫ',
968
- 'Ꝭ' => 'ꝭ',
969
- 'Ꝯ' => 'ꝯ',
970
- 'Ꝺ' => 'ꝺ',
971
- 'Ꝼ' => 'ꝼ',
972
- 'Ᵹ' => 'ᵹ',
973
- 'Ꝿ' => 'ꝿ',
974
- 'Ꞁ' => 'ꞁ',
975
- 'Ꞃ' => 'ꞃ',
976
- 'Ꞅ' => 'ꞅ',
977
- 'Ꞇ' => 'ꞇ',
978
- 'Ꞌ' => 'ꞌ',
979
- 'Ɥ' => 'ɥ',
980
- 'Ꞑ' => 'ꞑ',
981
- 'Ꞓ' => 'ꞓ',
982
- 'Ꞗ' => 'ꞗ',
983
- 'Ꞙ' => 'ꞙ',
984
- 'Ꞛ' => 'ꞛ',
985
- 'Ꞝ' => 'ꞝ',
986
- 'Ꞟ' => 'ꞟ',
987
- 'Ꞡ' => 'ꞡ',
988
- 'Ꞣ' => 'ꞣ',
989
- 'Ꞥ' => 'ꞥ',
990
- 'Ꞧ' => 'ꞧ',
991
- 'Ꞩ' => 'ꞩ',
992
- 'Ɦ' => 'ɦ',
993
- 'Ɜ' => 'ɜ',
994
- 'Ɡ' => 'ɡ',
995
- 'Ɬ' => 'ɬ',
996
- 'Ʞ' => 'ʞ',
997
- 'Ʇ' => 'ʇ',
998
- 'A' => 'a',
999
- 'B' => 'b',
1000
- 'C' => 'c',
1001
- 'D' => 'd',
1002
- 'E' => 'e',
1003
- 'F' => 'f',
1004
- 'G' => 'g',
1005
- 'H' => 'h',
1006
- 'I' => 'i',
1007
- 'J' => 'j',
1008
- 'K' => 'k',
1009
- 'L' => 'l',
1010
- 'M' => 'm',
1011
- 'N' => 'n',
1012
- 'O' => 'o',
1013
- 'P' => 'p',
1014
- 'Q' => 'q',
1015
- 'R' => 'r',
1016
- 'S' => 's',
1017
- 'T' => 't',
1018
- 'U' => 'u',
1019
- 'V' => 'v',
1020
- 'W' => 'w',
1021
- 'X' => 'x',
1022
- 'Y' => 'y',
1023
- 'Z' => 'z',
1024
- '𐐀' => '𐐨',
1025
- '𐐁' => '𐐩',
1026
- '𐐂' => '𐐪',
1027
- '𐐃' => '𐐫',
1028
- '𐐄' => '𐐬',
1029
- '𐐅' => '𐐭',
1030
- '𐐆' => '𐐮',
1031
- '𐐇' => '𐐯',
1032
- '𐐈' => '𐐰',
1033
- '𐐉' => '𐐱',
1034
- '𐐊' => '𐐲',
1035
- '𐐋' => '𐐳',
1036
- '𐐌' => '𐐴',
1037
- '𐐍' => '𐐵',
1038
- '𐐎' => '𐐶',
1039
- '𐐏' => '𐐷',
1040
- '𐐐' => '𐐸',
1041
- '𐐑' => '𐐹',
1042
- '𐐒' => '𐐺',
1043
- '𐐓' => '𐐻',
1044
- '𐐔' => '𐐼',
1045
- '𐐕' => '𐐽',
1046
- '𐐖' => '𐐾',
1047
- '𐐗' => '𐐿',
1048
- '𐐘' => '𐑀',
1049
- '𐐙' => '𐑁',
1050
- '𐐚' => '𐑂',
1051
- '𐐛' => '𐑃',
1052
- '𐐜' => '𐑄',
1053
- '𐐝' => '𐑅',
1054
- '𐐞' => '𐑆',
1055
- '𐐟' => '𐑇',
1056
- '𐐠' => '𐑈',
1057
- '𐐡' => '𐑉',
1058
- '𐐢' => '𐑊',
1059
- '𐐣' => '𐑋',
1060
- '𐐤' => '𐑌',
1061
- '𐐥' => '𐑍',
1062
- '𐐦' => '𐑎',
1063
- '𐐧' => '𐑏',
1064
- '𑢠' => '𑣀',
1065
- '𑢡' => '𑣁',
1066
- '𑢢' => '𑣂',
1067
- '𑢣' => '𑣃',
1068
- '𑢤' => '𑣄',
1069
- '𑢥' => '𑣅',
1070
- '𑢦' => '𑣆',
1071
- '𑢧' => '𑣇',
1072
- '𑢨' => '𑣈',
1073
- '𑢩' => '𑣉',
1074
- '𑢪' => '𑣊',
1075
- '𑢫' => '𑣋',
1076
- '𑢬' => '𑣌',
1077
- '𑢭' => '𑣍',
1078
- '𑢮' => '𑣎',
1079
- '𑢯' => '𑣏',
1080
- '𑢰' => '𑣐',
1081
- '𑢱' => '𑣑',
1082
- '𑢲' => '𑣒',
1083
- '𑢳' => '𑣓',
1084
- '𑢴' => '𑣔',
1085
- '𑢵' => '𑣕',
1086
- '𑢶' => '𑣖',
1087
- '𑢷' => '𑣗',
1088
- '𑢸' => '𑣘',
1089
- '𑢹' => '𑣙',
1090
- '𑢺' => '𑣚',
1091
- '𑢻' => '𑣛',
1092
- '𑢼' => '𑣜',
1093
- '𑢽' => '𑣝',
1094
- '𑢾' => '𑣞',
1095
- '𑢿' => '𑣟',
1096
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php DELETED
@@ -1,5 +0,0 @@
1
- <?php
2
-
3
- // from Case_Ignorable in https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
4
-
5
- return '/(?<![\x{0027}\x{002E}\x{003A}\x{005E}\x{0060}\x{00A8}\x{00AD}\x{00AF}\x{00B4}\x{00B7}\x{00B8}\x{02B0}-\x{02C1}\x{02C2}-\x{02C5}\x{02C6}-\x{02D1}\x{02D2}-\x{02DF}\x{02E0}-\x{02E4}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EE}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037A}\x{0384}-\x{0385}\x{0387}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0559}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{05F4}\x{0600}-\x{0605}\x{0610}-\x{061A}\x{061C}\x{0640}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DD}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07FA}\x{07FD}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0971}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E46}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EB9}\x{0EBB}-\x{0EBC}\x{0EC6}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{10FC}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17D7}\x{17DD}\x{180B}-\x{180D}\x{180E}\x{1843}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AA7}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1C78}-\x{1C7D}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1D2C}-\x{1D6A}\x{1D78}\x{1D9B}-\x{1DBF}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200F}\x{2018}\x{2019}\x{2024}\x{2027}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{2066}-\x{206F}\x{2071}\x{207F}\x{2090}-\x{209C}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2C7C}-\x{2C7D}\x{2CEF}-\x{2CF1}\x{2D6F}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E2F}\x{3005}\x{302A}-\x{302D}\x{3031}-\x{3035}\x{303B}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{309D}-\x{309E}\x{30FC}-\x{30FE}\x{A015}\x{A4F8}-\x{A4FD}\x{A60C}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A67F}\x{A69C}-\x{A69D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A770}\x{A788}\x{A789}-\x{A78A}\x{A7F8}-\x{A7F9}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}\x{A9CF}\x{A9E5}\x{A9E6}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA70}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AADD}\x{AAEC}-\x{AAED}\x{AAF3}-\x{AAF4}\x{AAF6}\x{AB5B}\x{AB5C}-\x{AB5F}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FBB2}-\x{FBC1}\x{FE00}-\x{FE0F}\x{FE13}\x{FE20}-\x{FE2F}\x{FE52}\x{FE55}\x{FEFF}\x{FF07}\x{FF0E}\x{FF1A}\x{FF3E}\x{FF40}\x{FF70}\x{FF9E}-\x{FF9F}\x{FFE3}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{110BD}\x{110CD}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16B40}-\x{16B43}\x{16F8F}-\x{16F92}\x{16F93}-\x{16F9F}\x{16FE0}-\x{16FE1}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1F3FB}-\x{1F3FF}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}])(\pL)(\pL*+)/u';
 
 
 
 
 
vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php DELETED
@@ -1,1104 +0,0 @@
1
- <?php
2
-
3
- return array(
4
- 'a' => 'A',
5
- 'b' => 'B',
6
- 'c' => 'C',
7
- 'd' => 'D',
8
- 'e' => 'E',
9
- 'f' => 'F',
10
- 'g' => 'G',
11
- 'h' => 'H',
12
- 'i' => 'I',
13
- 'j' => 'J',
14
- 'k' => 'K',
15
- 'l' => 'L',
16
- 'm' => 'M',
17
- 'n' => 'N',
18
- 'o' => 'O',
19
- 'p' => 'P',
20
- 'q' => 'Q',
21
- 'r' => 'R',
22
- 's' => 'S',
23
- 't' => 'T',
24
- 'u' => 'U',
25
- 'v' => 'V',
26
- 'w' => 'W',
27
- 'x' => 'X',
28
- 'y' => 'Y',
29
- 'z' => 'Z',
30
- 'µ' => 'Μ',
31
- 'à' => 'À',
32
- 'á' => 'Á',
33
- 'â' => 'Â',
34
- 'ã' => 'Ã',
35
- 'ä' => 'Ä',
36
- 'å' => 'Å',
37
- 'æ' => 'Æ',
38
- 'ç' => 'Ç',
39
- 'è' => 'È',
40
- 'é' => 'É',
41
- 'ê' => 'Ê',
42
- 'ë' => 'Ë',
43
- 'ì' => 'Ì',
44
- 'í' => 'Í',
45
- 'î' => 'Î',
46
- 'ï' => 'Ï',
47
- 'ð' => 'Ð',
48
- 'ñ' => 'Ñ',
49
- 'ò' => 'Ò',
50
- 'ó' => 'Ó',
51
- 'ô' => 'Ô',
52
- 'õ' => 'Õ',
53
- 'ö' => 'Ö',
54
- 'ø' => 'Ø',
55
- 'ù' => 'Ù',
56
- 'ú' => 'Ú',
57
- 'û' => 'Û',
58
- 'ü' => 'Ü',
59
- 'ý' => 'Ý',
60
- 'þ' => 'Þ',
61
- 'ÿ' => 'Ÿ',
62
- 'ā' => 'Ā',
63
- 'ă' => 'Ă',
64
- 'ą' => 'Ą',
65
- 'ć' => 'Ć',
66
- 'ĉ' => 'Ĉ',
67
- 'ċ' => 'Ċ',
68
- 'č' => 'Č',
69
- 'ď' => 'Ď',
70
- 'đ' => 'Đ',
71
- 'ē' => 'Ē',
72
- 'ĕ' => 'Ĕ',
73
- 'ė' => 'Ė',
74
- 'ę' => 'Ę',
75
- 'ě' => 'Ě',
76
- 'ĝ' => 'Ĝ',
77
- 'ğ' => 'Ğ',
78
- 'ġ' => 'Ġ',
79
- 'ģ' => 'Ģ',
80
- 'ĥ' => 'Ĥ',
81
- 'ħ' => 'Ħ',
82
- 'ĩ' => 'Ĩ',
83
- 'ī' => 'Ī',
84
- 'ĭ' => 'Ĭ',
85
- 'į' => 'Į',
86
- 'ı' => 'I',
87
- 'ij' => 'IJ',
88
- 'ĵ' => 'Ĵ',
89
- 'ķ' => 'Ķ',
90
- 'ĺ' => 'Ĺ',
91
- 'ļ' => 'Ļ',
92
- 'ľ' => 'Ľ',
93
- 'ŀ' => 'Ŀ',
94
- 'ł' => 'Ł',
95
- 'ń' => 'Ń',
96
- 'ņ' => 'Ņ',
97
- 'ň' => 'Ň',
98
- 'ŋ' => 'Ŋ',
99
- 'ō' => 'Ō',
100
- 'ŏ' => 'Ŏ',
101
- 'ő' => 'Ő',
102
- 'œ' => 'Œ',
103
- 'ŕ' => 'Ŕ',
104
- 'ŗ' => 'Ŗ',
105
- 'ř' => 'Ř',
106
- 'ś' => 'Ś',
107
- 'ŝ' => 'Ŝ',
108
- 'ş' => 'Ş',
109
- 'š' => 'Š',
110
- 'ţ' => 'Ţ',
111
- 'ť' => 'Ť',
112
- 'ŧ' => 'Ŧ',
113
- 'ũ' => 'Ũ',
114
- 'ū' => 'Ū',
115
- 'ŭ' => 'Ŭ',
116
- 'ů' => 'Ů',
117
- 'ű' => 'Ű',
118
- 'ų' => 'Ų',
119
- 'ŵ' => 'Ŵ',
120
- 'ŷ' => 'Ŷ',
121
- 'ź' => 'Ź',
122
- 'ż' => 'Ż',
123
- 'ž' => 'Ž',
124
- 'ſ' => 'S',
125
- 'ƀ' => 'Ƀ',
126
- 'ƃ' => 'Ƃ',
127
- 'ƅ' => 'Ƅ',
128
- 'ƈ' => 'Ƈ',
129
- 'ƌ' => 'Ƌ',
130
- 'ƒ' => 'Ƒ',
131
- 'ƕ' => 'Ƕ',
132
- 'ƙ' => 'Ƙ',
133
- 'ƚ' => 'Ƚ',
134
- 'ƞ' => 'Ƞ',
135
- 'ơ' => 'Ơ',
136
- 'ƣ' => 'Ƣ',
137
- 'ƥ' => 'Ƥ',
138
- 'ƨ' => 'Ƨ',
139
- 'ƭ' => 'Ƭ',
140
- 'ư' => 'Ư',
141
- 'ƴ' => 'Ƴ',
142
- 'ƶ' => 'Ƶ',
143
- 'ƹ' => 'Ƹ',
144
- 'ƽ' => 'Ƽ',
145
- 'ƿ' => 'Ƿ',
146
- 'Dž' => 'DŽ',
147
- 'dž' => 'DŽ',
148
- 'Lj' => 'LJ',
149
- 'lj' => 'LJ',
150
- 'Nj' => 'NJ',
151
- 'nj' => 'NJ',
152
- 'ǎ' => 'Ǎ',
153
- 'ǐ' => 'Ǐ',
154
- 'ǒ' => 'Ǒ',
155
- 'ǔ' => 'Ǔ',
156
- 'ǖ' => 'Ǖ',
157
- 'ǘ' => 'Ǘ',
158
- 'ǚ' => 'Ǚ',
159
- 'ǜ' => 'Ǜ',
160
- 'ǝ' => 'Ǝ',
161
- 'ǟ' => 'Ǟ',
162
- 'ǡ' => 'Ǡ',
163
- 'ǣ' => 'Ǣ',
164
- 'ǥ' => 'Ǥ',
165
- 'ǧ' => 'Ǧ',
166
- 'ǩ' => 'Ǩ',
167
- 'ǫ' => 'Ǫ',
168
- 'ǭ' => 'Ǭ',
169
- 'ǯ' => 'Ǯ',
170
- 'Dz' => 'DZ',
171
- 'dz' => 'DZ',
172
- 'ǵ' => 'Ǵ',
173
- 'ǹ' => 'Ǹ',
174
- 'ǻ' => 'Ǻ',
175
- 'ǽ' => 'Ǽ',
176
- 'ǿ' => 'Ǿ',
177
- 'ȁ' => 'Ȁ',
178
- 'ȃ' => 'Ȃ',
179
- 'ȅ' => 'Ȅ',
180
- 'ȇ' => 'Ȇ',
181
- 'ȉ' => 'Ȉ',
182
- 'ȋ' => 'Ȋ',
183
- 'ȍ' => 'Ȍ',
184
- 'ȏ' => 'Ȏ',
185
- 'ȑ' => 'Ȑ',
186
- 'ȓ' => 'Ȓ',
187
- 'ȕ' => 'Ȕ',
188
- 'ȗ' => 'Ȗ',
189
- 'ș' => 'Ș',
190
- 'ț' => 'Ț',
191
- 'ȝ' => 'Ȝ',
192
- 'ȟ' => 'Ȟ',
193
- 'ȣ' => 'Ȣ',
194
- 'ȥ' => 'Ȥ',
195
- 'ȧ' => 'Ȧ',
196
- 'ȩ' => 'Ȩ',
197
- 'ȫ' => 'Ȫ',
198
- 'ȭ' => 'Ȭ',
199
- 'ȯ' => 'Ȯ',
200
- 'ȱ' => 'Ȱ',
201
- 'ȳ' => 'Ȳ',
202
- 'ȼ' => 'Ȼ',
203
- 'ȿ' => 'Ȿ',
204
- 'ɀ' => 'Ɀ',
205
- 'ɂ' => 'Ɂ',
206
- 'ɇ' => 'Ɇ',
207
- 'ɉ' => 'Ɉ',
208
- 'ɋ' => 'Ɋ',
209
- 'ɍ' => 'Ɍ',
210
- 'ɏ' => 'Ɏ',
211
- 'ɐ' => 'Ɐ',
212
- 'ɑ' => 'Ɑ',
213
- 'ɒ' => 'Ɒ',
214
- 'ɓ' => 'Ɓ',
215
- 'ɔ' => 'Ɔ',
216
- 'ɖ' => 'Ɖ',
217
- 'ɗ' => 'Ɗ',
218
- 'ə' => 'Ə',
219
- 'ɛ' => 'Ɛ',
220
- 'ɜ' => 'Ɜ',
221
- 'ɠ' => 'Ɠ',
222
- 'ɡ' => 'Ɡ',
223
- 'ɣ' => 'Ɣ',
224
- 'ɥ' => 'Ɥ',
225
- 'ɦ' => 'Ɦ',
226
- 'ɨ' => 'Ɨ',
227
- 'ɩ' => 'Ɩ',
228
- 'ɫ' => 'Ɫ',
229
- 'ɬ' => 'Ɬ',
230
- 'ɯ' => 'Ɯ',
231
- 'ɱ' => 'Ɱ',
232
- 'ɲ' => 'Ɲ',
233
- 'ɵ' => 'Ɵ',
234
- 'ɽ' => 'Ɽ',
235
- 'ʀ' => 'Ʀ',
236
- 'ʃ' => 'Ʃ',
237
- 'ʇ' => 'Ʇ',
238
- 'ʈ' => 'Ʈ',
239
- 'ʉ' => 'Ʉ',
240
- 'ʊ' => 'Ʊ',
241
- 'ʋ' => 'Ʋ',
242
- 'ʌ' => 'Ʌ',
243
- 'ʒ' => 'Ʒ',
244
- 'ʞ' => 'Ʞ',
245
- 'ͅ' => 'Ι',
246
- 'ͱ' => 'Ͱ',
247
- 'ͳ' => 'Ͳ',
248
- 'ͷ' => 'Ͷ',
249
- 'ͻ' => 'Ͻ',
250
- 'ͼ' => 'Ͼ',
251
- 'ͽ' => 'Ͽ',
252
- 'ά' => 'Ά',
253
- 'έ' => 'Έ',
254
- 'ή' => 'Ή',
255
- 'ί' => 'Ί',
256
- 'α' => 'Α',
257
- 'β' => 'Β',
258
- 'γ' => 'Γ',
259
- 'δ' => 'Δ',
260
- 'ε' => 'Ε',
261
- 'ζ' => 'Ζ',
262
- 'η' => 'Η',
263
- 'θ' => 'Θ',
264
- 'ι' => 'Ι',
265
- 'κ' => 'Κ',
266
- 'λ' => 'Λ',
267
- 'μ' => 'Μ',
268
- 'ν' => 'Ν',
269
- 'ξ' => 'Ξ',
270
- 'ο' => 'Ο',
271
- 'π' => 'Π',
272
- 'ρ' => 'Ρ',
273
- 'ς' => 'Σ',
274
- 'σ' => 'Σ',
275
- 'τ' => 'Τ',
276
- 'υ' => 'Υ',
277
- 'φ' => 'Φ',
278
- 'χ' => 'Χ',
279
- 'ψ' => 'Ψ',
280
- 'ω' => 'Ω',
281
- 'ϊ' => 'Ϊ',
282
- 'ϋ' => 'Ϋ',
283
- 'ό' => 'Ό',
284
- 'ύ' => 'Ύ',
285
- 'ώ' => 'Ώ',
286
- 'ϐ' => 'Β',
287
- 'ϑ' => 'Θ',
288
- 'ϕ' => 'Φ',
289
- 'ϖ' => 'Π',
290
- 'ϗ' => 'Ϗ',
291
- 'ϙ' => 'Ϙ',
292
- 'ϛ' => 'Ϛ',
293
- 'ϝ' => 'Ϝ',
294
- 'ϟ' => 'Ϟ',
295
- 'ϡ' => 'Ϡ',
296
- 'ϣ' => 'Ϣ',
297
- 'ϥ' => 'Ϥ',
298
- 'ϧ' => 'Ϧ',
299
- 'ϩ' => 'Ϩ',
300
- 'ϫ' => 'Ϫ',
301
- 'ϭ' => 'Ϭ',
302
- 'ϯ' => 'Ϯ',
303
- 'ϰ' => 'Κ',
304
- 'ϱ' => 'Ρ',
305
- 'ϲ' => 'Ϲ',
306
- 'ϳ' => 'Ϳ',
307
- 'ϵ' => 'Ε',
308
- 'ϸ' => 'Ϸ',
309
- 'ϻ' => 'Ϻ',
310
- 'а' => 'А',
311
- 'б' => 'Б',
312
- 'в' => 'В',
313
- 'г' => 'Г',
314
- 'д' => 'Д',
315
- 'е' => 'Е',
316
- 'ж' => 'Ж',
317
- 'з' => 'З',
318
- 'и' => 'И',
319
- 'й' => 'Й',
320
- 'к' => 'К',
321
- 'л' => 'Л',
322
- 'м' => 'М',
323
- 'н' => 'Н',
324
- 'о' => 'О',
325
- 'п' => 'П',
326
- 'р' => 'Р',
327
- 'с' => 'С',
328
- 'т' => 'Т',
329
- 'у' => 'У',
330
- 'ф' => 'Ф',
331
- 'х' => 'Х',
332
- 'ц' => 'Ц',
333
- 'ч' => 'Ч',
334
- 'ш' => 'Ш',
335
- 'щ' => 'Щ',
336
- 'ъ' => 'Ъ',
337
- 'ы' => 'Ы',
338
- 'ь' => 'Ь',
339
- 'э' => 'Э',
340
- 'ю' => 'Ю',
341
- 'я' => 'Я',
342
- 'ѐ' => 'Ѐ',
343
- 'ё' => 'Ё',
344
- 'ђ' => 'Ђ',
345
- 'ѓ' => 'Ѓ',
346
- 'є' => 'Є',
347
- 'ѕ' => 'Ѕ',
348
- 'і' => 'І',
349
- 'ї' => 'Ї',
350
- 'ј' => 'Ј',
351
- 'љ' => 'Љ',
352
- 'њ' => 'Њ',
353
- 'ћ' => 'Ћ',
354
- 'ќ' => 'Ќ',
355
- 'ѝ' => 'Ѝ',
356
- 'ў' => 'Ў',
357
- 'џ' => 'Џ',
358
- 'ѡ' => 'Ѡ',
359
- 'ѣ' => 'Ѣ',
360
- 'ѥ' => 'Ѥ',
361
- 'ѧ' => 'Ѧ',
362
- 'ѩ' => 'Ѩ',
363
- 'ѫ' => 'Ѫ',
364
- 'ѭ' => 'Ѭ',
365
- 'ѯ' => 'Ѯ',
366
- 'ѱ' => 'Ѱ',
367
- 'ѳ' => 'Ѳ',
368
- 'ѵ' => 'Ѵ',
369
- 'ѷ' => 'Ѷ',
370
- 'ѹ' => 'Ѹ',
371
- 'ѻ' => 'Ѻ',
372
- 'ѽ' => 'Ѽ',
373
- 'ѿ' => 'Ѿ',
374
- 'ҁ' => 'Ҁ',
375
- 'ҋ' => 'Ҋ',
376
- 'ҍ' => 'Ҍ',
377
- 'ҏ' => 'Ҏ',
378
- 'ґ' => 'Ґ',
379
- 'ғ' => 'Ғ',
380
- 'ҕ' => 'Ҕ',
381
- 'җ' => 'Җ',
382
- 'ҙ' => 'Ҙ',
383
- 'қ' => 'Қ',
384
- 'ҝ' => 'Ҝ',
385
- 'ҟ' => 'Ҟ',
386
- 'ҡ' => 'Ҡ',
387
- 'ң' => 'Ң',
388
- 'ҥ' => 'Ҥ',
389
- 'ҧ' => 'Ҧ',
390
- 'ҩ' => 'Ҩ',
391
- 'ҫ' => 'Ҫ',
392
- 'ҭ' => 'Ҭ',
393
- 'ү' => 'Ү',
394
- 'ұ' => 'Ұ',
395
- 'ҳ' => 'Ҳ',
396
- 'ҵ' => 'Ҵ',
397
- 'ҷ' => 'Ҷ',
398
- 'ҹ' => 'Ҹ',
399
- 'һ' => 'Һ',
400
- 'ҽ' => 'Ҽ',
401
- 'ҿ' => 'Ҿ',
402
- 'ӂ' => 'Ӂ',
403
- 'ӄ' => 'Ӄ',
404
- 'ӆ' => 'Ӆ',
405
- 'ӈ' => 'Ӈ',
406
- 'ӊ' => 'Ӊ',
407
- 'ӌ' => 'Ӌ',
408
- 'ӎ' => 'Ӎ',
409
- 'ӏ' => 'Ӏ',
410
- 'ӑ' => 'Ӑ',
411
- 'ӓ' => 'Ӓ',
412
- 'ӕ' => 'Ӕ',
413
- 'ӗ' => 'Ӗ',
414
- 'ә' => 'Ә',
415
- 'ӛ' => 'Ӛ',
416
- 'ӝ' => 'Ӝ',
417
- 'ӟ' => 'Ӟ',
418
- 'ӡ' => 'Ӡ',
419
- 'ӣ' => 'Ӣ',
420
- 'ӥ' => 'Ӥ',
421
- 'ӧ' => 'Ӧ',
422
- 'ө' => 'Ө',
423
- 'ӫ' => 'Ӫ',
424
- 'ӭ' => 'Ӭ',
425
- 'ӯ' => 'Ӯ',
426
- 'ӱ' => 'Ӱ',
427
- 'ӳ' => 'Ӳ',
428
- 'ӵ' => 'Ӵ',
429
- 'ӷ' => 'Ӷ',
430
- 'ӹ' => 'Ӹ',
431
- 'ӻ' => 'Ӻ',
432
- 'ӽ' => 'Ӽ',
433
- 'ӿ' => 'Ӿ',
434
- 'ԁ' => 'Ԁ',
435
- 'ԃ' => 'Ԃ',
436
- 'ԅ' => 'Ԅ',
437
- 'ԇ' => 'Ԇ',
438
- 'ԉ' => 'Ԉ',
439
- 'ԋ' => 'Ԋ',
440
- 'ԍ' => 'Ԍ',
441
- 'ԏ' => 'Ԏ',
442
- 'ԑ' => 'Ԑ',
443
- 'ԓ' => 'Ԓ',
444
- 'ԕ' => 'Ԕ',
445
- 'ԗ' => 'Ԗ',
446
- 'ԙ' => 'Ԙ',
447
- 'ԛ' => 'Ԛ',
448
- 'ԝ' => 'Ԝ',
449
- 'ԟ' => 'Ԟ',
450
- 'ԡ' => 'Ԡ',
451
- 'ԣ' => 'Ԣ',
452
- 'ԥ' => 'Ԥ',
453
- 'ԧ' => 'Ԧ',
454
- 'ԩ' => 'Ԩ',
455
- 'ԫ' => 'Ԫ',
456
- 'ԭ' => 'Ԭ',
457
- 'ԯ' => 'Ԯ',
458
- 'ա' => 'Ա',
459
- 'բ' => 'Բ',
460
- 'գ' => 'Գ',
461
- 'դ' => 'Դ',
462
- 'ե' => 'Ե',
463
- 'զ' => 'Զ',
464
- 'է' => 'Է',
465
- 'ը' => 'Ը',
466
- 'թ' => 'Թ',
467
- 'ժ' => 'Ժ',
468
- 'ի' => 'Ի',
469
- 'լ' => 'Լ',
470
- 'խ' => 'Խ',
471
- 'ծ' => 'Ծ',
472
- 'կ' => 'Կ',
473
- 'հ' => 'Հ',
474
- 'ձ' => 'Ձ',
475
- 'ղ' => 'Ղ',
476
- 'ճ' => 'Ճ',
477
- 'մ' => 'Մ',
478
- 'յ' => 'Յ',
479
- 'ն' => 'Ն',
480
- 'շ' => 'Շ',
481
- 'ո' => 'Ո',
482
- 'չ' => 'Չ',
483
- 'պ' => 'Պ',
484
- 'ջ' => 'Ջ',
485
- 'ռ' => 'Ռ',
486
- 'ս' => 'Ս',
487
- 'վ' => 'Վ',
488
- 'տ' => 'Տ',
489
- 'ր' => 'Ր',
490
- 'ց' => 'Ց',
491
- 'ւ' => 'Ւ',
492
- 'փ' => 'Փ',
493
- 'ք' => 'Ք',
494
- 'օ' => 'Օ',
495
- 'ֆ' => 'Ֆ',
496
- 'ᵹ' => 'Ᵹ',
497
- 'ᵽ' => 'Ᵽ',
498
- 'ḁ' => 'Ḁ',
499
- 'ḃ' => 'Ḃ',
500
- 'ḅ' => 'Ḅ',
501
- 'ḇ' => 'Ḇ',
502
- 'ḉ' => 'Ḉ',
503
- 'ḋ' => 'Ḋ',
504
- 'ḍ' => 'Ḍ',
505
- 'ḏ' => 'Ḏ',
506
- 'ḑ' => 'Ḑ',
507
- 'ḓ' => 'Ḓ',
508
- 'ḕ' => 'Ḕ',
509
- 'ḗ' => 'Ḗ',
510
- 'ḙ' => 'Ḙ',
511
- 'ḛ' => 'Ḛ',
512
- 'ḝ' => 'Ḝ',
513
- 'ḟ' => 'Ḟ',
514
- 'ḡ' => 'Ḡ',
515
- 'ḣ' => 'Ḣ',
516
- 'ḥ' => 'Ḥ',
517
- 'ḧ' => 'Ḧ',
518
- 'ḩ' => 'Ḩ',
519
- 'ḫ' => 'Ḫ',
520
- 'ḭ' => 'Ḭ',
521
- 'ḯ' => 'Ḯ',
522
- 'ḱ' => 'Ḱ',
523
- 'ḳ' => 'Ḳ',
524
- 'ḵ' => 'Ḵ',
525
- 'ḷ' => 'Ḷ',
526
- 'ḹ' => 'Ḹ',
527
- 'ḻ' => 'Ḻ',
528
- 'ḽ' => 'Ḽ',
529
- 'ḿ' => 'Ḿ',
530
- 'ṁ' => 'Ṁ',
531
- 'ṃ' => 'Ṃ',
532
- 'ṅ' => 'Ṅ',
533
- 'ṇ' => 'Ṇ',
534
- 'ṉ' => 'Ṉ',
535
- 'ṋ' => 'Ṋ',
536
- 'ṍ' => 'Ṍ',
537
- 'ṏ' => 'Ṏ',
538
- 'ṑ' => 'Ṑ',
539
- 'ṓ' => 'Ṓ',
540
- 'ṕ' => 'Ṕ',
541
- 'ṗ' => 'Ṗ',
542
- 'ṙ' => 'Ṙ',
543
- 'ṛ' => 'Ṛ',
544
- 'ṝ' => 'Ṝ',
545
- 'ṟ' => 'Ṟ',
546
- 'ṡ' => 'Ṡ',
547
- 'ṣ' => 'Ṣ',
548
- 'ṥ' => 'Ṥ',
549
- 'ṧ' => 'Ṧ',
550
- 'ṩ' => 'Ṩ',
551
- 'ṫ' => 'Ṫ',
552
- 'ṭ' => 'Ṭ',
553
- 'ṯ' => 'Ṯ',
554
- 'ṱ' => 'Ṱ',
555
- 'ṳ' => 'Ṳ',
556
- 'ṵ' => 'Ṵ',
557
- 'ṷ' => 'Ṷ',
558
- 'ṹ' => 'Ṹ',
559
- 'ṻ' => 'Ṻ',
560
- 'ṽ' => 'Ṽ',
561
- 'ṿ' => 'Ṿ',
562
- 'ẁ' => 'Ẁ',
563
- 'ẃ' => 'Ẃ',
564
- 'ẅ' => 'Ẅ',
565
- 'ẇ' => 'Ẇ',
566
- 'ẉ' => 'Ẉ',
567
- 'ẋ' => 'Ẋ',
568
- 'ẍ' => 'Ẍ',
569
- 'ẏ' => 'Ẏ',
570
- 'ẑ' => 'Ẑ',
571
- 'ẓ' => 'Ẓ',
572
- 'ẕ' => 'Ẕ',
573
- 'ẛ' => 'Ṡ',
574
- 'ạ' => 'Ạ',
575
- 'ả' => 'Ả',
576
- 'ấ' => 'Ấ',
577
- 'ầ' => 'Ầ',
578
- 'ẩ' => 'Ẩ',
579
- 'ẫ' => 'Ẫ',
580
- 'ậ' => 'Ậ',
581
- 'ắ' => 'Ắ',
582
- 'ằ' => 'Ằ',
583
- 'ẳ' => 'Ẳ',
584
- 'ẵ' => 'Ẵ',
585
- 'ặ' => 'Ặ',
586
- 'ẹ' => 'Ẹ',
587
- 'ẻ' => 'Ẻ',
588
- 'ẽ' => 'Ẽ',
589
- 'ế' => 'Ế',
590
- 'ề' => 'Ề',
591
- 'ể' => 'Ể',
592
- 'ễ' => 'Ễ',
593
- 'ệ' => 'Ệ',
594
- 'ỉ' => 'Ỉ',
595
- 'ị' => 'Ị',
596
- 'ọ' => 'Ọ',
597
- 'ỏ' => 'Ỏ',
598
- 'ố' => 'Ố',
599
- 'ồ' => 'Ồ',
600
- 'ổ' => 'Ổ',
601
- 'ỗ' => 'Ỗ',
602
- 'ộ' => 'Ộ',
603
- 'ớ' => 'Ớ',
604
- 'ờ' => 'Ờ',
605
- 'ở' => 'Ở',
606
- 'ỡ' => 'Ỡ',
607
- 'ợ' => 'Ợ',
608
- 'ụ' => 'Ụ',
609
- 'ủ' => 'Ủ',
610
- 'ứ' => 'Ứ',
611
- 'ừ' => 'Ừ',
612
- 'ử' => 'Ử',
613
- 'ữ' => 'Ữ',
614
- 'ự' => 'Ự',
615
- 'ỳ' => 'Ỳ',
616
- 'ỵ' => 'Ỵ',
617
- 'ỷ' => 'Ỷ',
618
- 'ỹ' => 'Ỹ',
619
- 'ỻ' => 'Ỻ',
620
- 'ỽ' => 'Ỽ',
621
- 'ỿ' => 'Ỿ',
622
- 'ἀ' => 'Ἀ',
623
- 'ἁ' => 'Ἁ',
624
- 'ἂ' => 'Ἂ',
625
- 'ἃ' => 'Ἃ',
626
- 'ἄ' => 'Ἄ',
627
- 'ἅ' => 'Ἅ',
628
- 'ἆ' => 'Ἆ',
629
- 'ἇ' => 'Ἇ',
630
- 'ἐ' => 'Ἐ',
631
- 'ἑ' => 'Ἑ',
632
- 'ἒ' => 'Ἒ',
633
- 'ἓ' => 'Ἓ',
634
- 'ἔ' => 'Ἔ',
635
- 'ἕ' => 'Ἕ',
636
- 'ἠ' => 'Ἠ',
637
- 'ἡ' => 'Ἡ',
638
- 'ἢ' => 'Ἢ',
639
- 'ἣ' => 'Ἣ',
640
- 'ἤ' => 'Ἤ',
641
- 'ἥ' => 'Ἥ',
642
- 'ἦ' => 'Ἦ',
643
- 'ἧ' => 'Ἧ',
644
- 'ἰ' => 'Ἰ',
645
- 'ἱ' => 'Ἱ',
646
- 'ἲ' => 'Ἲ',
647
- 'ἳ' => 'Ἳ',
648
- 'ἴ' => 'Ἴ',
649
- 'ἵ' => 'Ἵ',
650
- 'ἶ' => 'Ἶ',
651
- 'ἷ' => 'Ἷ',
652
- 'ὀ' => 'Ὀ',
653
- 'ὁ' => 'Ὁ',
654
- 'ὂ' => 'Ὂ',
655
- 'ὃ' => 'Ὃ',
656
- 'ὄ' => 'Ὄ',
657
- 'ὅ' => 'Ὅ',
658
- 'ὑ' => 'Ὑ',
659
- 'ὓ' => 'Ὓ',
660
- 'ὕ' => 'Ὕ',
661
- 'ὗ' => 'Ὗ',
662
- 'ὠ' => 'Ὠ',
663
- 'ὡ' => 'Ὡ',
664
- 'ὢ' => 'Ὢ',
665
- 'ὣ' => 'Ὣ',
666
- 'ὤ' => 'Ὤ',
667
- 'ὥ' => 'Ὥ',
668
- 'ὦ' => 'Ὦ',
669
- 'ὧ' => 'Ὧ',
670
- 'ὰ' => 'Ὰ',
671
- 'ά' => 'Ά',
672
- 'ὲ' => 'Ὲ',
673
- 'έ' => 'Έ',
674
- 'ὴ' => 'Ὴ',
675
- 'ή' => 'Ή',
676
- 'ὶ' => 'Ὶ',
677
- 'ί' => 'Ί',
678
- 'ὸ' => 'Ὸ',
679
- 'ό' => 'Ό',
680
- 'ὺ' => 'Ὺ',
681
- 'ύ' => 'Ύ',
682
- 'ὼ' => 'Ὼ',
683
- 'ώ' => 'Ώ',
684
- 'ᾀ' => 'ᾈ',
685
- 'ᾁ' => 'ᾉ',
686
- 'ᾂ' => 'ᾊ',
687
- 'ᾃ' => 'ᾋ',
688
- 'ᾄ' => 'ᾌ',
689
- 'ᾅ' => 'ᾍ',
690
- 'ᾆ' => 'ᾎ',
691
- 'ᾇ' => 'ᾏ',
692
- 'ᾐ' => 'ᾘ',
693
- 'ᾑ' => 'ᾙ',
694
- 'ᾒ' => 'ᾚ',
695
- 'ᾓ' => 'ᾛ',
696
- 'ᾔ' => 'ᾜ',
697
- 'ᾕ' => 'ᾝ',
698
- 'ᾖ' => 'ᾞ',
699
- 'ᾗ' => 'ᾟ',
700
- 'ᾠ' => 'ᾨ',
701
- 'ᾡ' => 'ᾩ',
702
- 'ᾢ' => 'ᾪ',
703
- 'ᾣ' => 'ᾫ',
704
- 'ᾤ' => 'ᾬ',
705
- 'ᾥ' => 'ᾭ',
706
- 'ᾦ' => 'ᾮ',
707
- 'ᾧ' => 'ᾯ',
708
- 'ᾰ' => 'Ᾰ',
709
- 'ᾱ' => 'Ᾱ',
710
- 'ᾳ' => 'ᾼ',
711
- 'ι' => 'Ι',
712
- 'ῃ' => 'ῌ',
713
- 'ῐ' => 'Ῐ',
714
- 'ῑ' => 'Ῑ',
715
- 'ῠ' => 'Ῠ',
716
- 'ῡ' => 'Ῡ',
717
- 'ῥ' => 'Ῥ',
718
- 'ῳ' => 'ῼ',
719
- 'ⅎ' => 'Ⅎ',
720
- 'ⅰ' => 'Ⅰ',
721
- 'ⅱ' => 'Ⅱ',
722
- 'ⅲ' => 'Ⅲ',
723
- 'ⅳ' => 'Ⅳ',
724
- 'ⅴ' => 'Ⅴ',
725
- 'ⅵ' => 'Ⅵ',
726
- 'ⅶ' => 'Ⅶ',
727
- 'ⅷ' => 'Ⅷ',
728
- 'ⅸ' => 'Ⅸ',
729
- 'ⅹ' => 'Ⅹ',
730
- 'ⅺ' => 'Ⅺ',
731
- 'ⅻ' => 'Ⅻ',
732
- 'ⅼ' => 'Ⅼ',
733
- 'ⅽ' => 'Ⅽ',
734
- 'ⅾ' => 'Ⅾ',
735
- 'ⅿ' => 'Ⅿ',
736
- 'ↄ' => 'Ↄ',
737
- 'ⓐ' => 'Ⓐ',
738
- 'ⓑ' => 'Ⓑ',
739
- 'ⓒ' => 'Ⓒ',
740
- 'ⓓ' => 'Ⓓ',
741
- 'ⓔ' => 'Ⓔ',
742
- 'ⓕ' => 'Ⓕ',
743
- 'ⓖ' => 'Ⓖ',
744
- 'ⓗ' => 'Ⓗ',
745
- 'ⓘ' => 'Ⓘ',
746
- 'ⓙ' => 'Ⓙ',
747
- 'ⓚ' => 'Ⓚ',
748
- 'ⓛ' => 'Ⓛ',
749
- 'ⓜ' => 'Ⓜ',
750
- 'ⓝ' => 'Ⓝ',
751
- 'ⓞ' => 'Ⓞ',
752
- 'ⓟ' => 'Ⓟ',
753
- 'ⓠ' => 'Ⓠ',
754
- 'ⓡ' => 'Ⓡ',
755
- 'ⓢ' => 'Ⓢ',
756
- 'ⓣ' => 'Ⓣ',
757
- 'ⓤ' => 'Ⓤ',
758
- 'ⓥ' => 'Ⓥ',
759
- 'ⓦ' => 'Ⓦ',
760
- 'ⓧ' => 'Ⓧ',
761
- 'ⓨ' => 'Ⓨ',
762
- 'ⓩ' => 'Ⓩ',
763
- 'ⰰ' => 'Ⰰ',
764
- 'ⰱ' => 'Ⰱ',
765
- 'ⰲ' => 'Ⰲ',
766
- 'ⰳ' => 'Ⰳ',
767
- 'ⰴ' => 'Ⰴ',
768
- 'ⰵ' => 'Ⰵ',
769
- 'ⰶ' => 'Ⰶ',
770
- 'ⰷ' => 'Ⰷ',
771
- 'ⰸ' => 'Ⰸ',
772
- 'ⰹ' => 'Ⰹ',
773
- 'ⰺ' => 'Ⰺ',
774
- 'ⰻ' => 'Ⰻ',
775
- 'ⰼ' => 'Ⰼ',
776
- 'ⰽ' => 'Ⰽ',
777
- 'ⰾ' => 'Ⰾ',
778
- 'ⰿ' => 'Ⰿ',
779
- 'ⱀ' => 'Ⱀ',
780
- 'ⱁ' => 'Ⱁ',
781
- 'ⱂ' => 'Ⱂ',
782
- 'ⱃ' => 'Ⱃ',
783
- 'ⱄ' => 'Ⱄ',
784
- 'ⱅ' => 'Ⱅ',
785
- 'ⱆ' => 'Ⱆ',
786
- 'ⱇ' => 'Ⱇ',
787
- 'ⱈ' => 'Ⱈ',
788
- 'ⱉ' => 'Ⱉ',
789
- 'ⱊ' => 'Ⱊ',
790
- 'ⱋ' => 'Ⱋ',
791
- 'ⱌ' => 'Ⱌ',
792
- 'ⱍ' => 'Ⱍ',
793
- 'ⱎ' => 'Ⱎ',
794
- 'ⱏ' => 'Ⱏ',
795
- 'ⱐ' => 'Ⱐ',
796
- 'ⱑ' => 'Ⱑ',
797
- 'ⱒ' => 'Ⱒ',
798
- 'ⱓ' => 'Ⱓ',
799
- 'ⱔ' => 'Ⱔ',
800
- 'ⱕ' => 'Ⱕ',
801
- 'ⱖ' => 'Ⱖ',
802
- 'ⱗ' => 'Ⱗ',
803
- 'ⱘ' => 'Ⱘ',
804
- 'ⱙ' => 'Ⱙ',
805
- 'ⱚ' => 'Ⱚ',
806
- 'ⱛ' => 'Ⱛ',
807
- 'ⱜ' => 'Ⱜ',
808
- 'ⱝ' => 'Ⱝ',
809
- 'ⱞ' => 'Ⱞ',
810
- 'ⱡ' => 'Ⱡ',
811
- 'ⱥ' => 'Ⱥ',
812
- 'ⱦ' => 'Ⱦ',
813
- 'ⱨ' => 'Ⱨ',
814
- 'ⱪ' => 'Ⱪ',
815
- 'ⱬ' => 'Ⱬ',
816
- 'ⱳ' => 'Ⱳ',
817
- 'ⱶ' => 'Ⱶ',
818
- 'ⲁ' => 'Ⲁ',
819
- 'ⲃ' => 'Ⲃ',
820
- 'ⲅ' => 'Ⲅ',
821
- 'ⲇ' => 'Ⲇ',
822
- 'ⲉ' => 'Ⲉ',
823
- 'ⲋ' => 'Ⲋ',
824
- 'ⲍ' => 'Ⲍ',
825
- 'ⲏ' => 'Ⲏ',
826
- 'ⲑ' => 'Ⲑ',
827
- 'ⲓ' => 'Ⲓ',
828
- 'ⲕ' => 'Ⲕ',
829
- 'ⲗ' => 'Ⲗ',
830
- 'ⲙ' => 'Ⲙ',
831
- 'ⲛ' => 'Ⲛ',
832
- 'ⲝ' => 'Ⲝ',
833
- 'ⲟ' => 'Ⲟ',
834
- 'ⲡ' => 'Ⲡ',
835
- 'ⲣ' => 'Ⲣ',
836
- 'ⲥ' => 'Ⲥ',
837
- 'ⲧ' => 'Ⲧ',
838
- 'ⲩ' => 'Ⲩ',
839
- 'ⲫ' => 'Ⲫ',
840
- 'ⲭ' => 'Ⲭ',
841
- 'ⲯ' => 'Ⲯ',
842
- 'ⲱ' => 'Ⲱ',
843
- 'ⲳ' => 'Ⲳ',
844
- 'ⲵ' => 'Ⲵ',
845
- 'ⲷ' => 'Ⲷ',
846
- 'ⲹ' => 'Ⲹ',
847
- 'ⲻ' => 'Ⲻ',
848
- 'ⲽ' => 'Ⲽ',
849
- 'ⲿ' => 'Ⲿ',
850
- 'ⳁ' => 'Ⳁ',
851
- 'ⳃ' => 'Ⳃ',
852
- 'ⳅ' => 'Ⳅ',
853
- 'ⳇ' => 'Ⳇ',
854
- 'ⳉ' => 'Ⳉ',
855
- 'ⳋ' => 'Ⳋ',
856
- 'ⳍ' => 'Ⳍ',
857
- 'ⳏ' => 'Ⳏ',
858
- 'ⳑ' => 'Ⳑ',
859
- 'ⳓ' => 'Ⳓ',
860
- 'ⳕ' => 'Ⳕ',
861
- 'ⳗ' => 'Ⳗ',
862
- 'ⳙ' => 'Ⳙ',
863
- 'ⳛ' => 'Ⳛ',
864
- 'ⳝ' => 'Ⳝ',
865
- 'ⳟ' => 'Ⳟ',
866
- 'ⳡ' => 'Ⳡ',
867
- 'ⳣ' => 'Ⳣ',
868
- 'ⳬ' => 'Ⳬ',
869
- 'ⳮ' => 'Ⳮ',
870
- 'ⳳ' => 'Ⳳ',
871
- 'ⴀ' => 'Ⴀ',
872
- 'ⴁ' => 'Ⴁ',
873
- 'ⴂ' => 'Ⴂ',
874
- 'ⴃ' => 'Ⴃ',
875
- 'ⴄ' => 'Ⴄ',
876
- 'ⴅ' => 'Ⴅ',
877
- 'ⴆ' => 'Ⴆ',
878
- 'ⴇ' => 'Ⴇ',
879
- 'ⴈ' => 'Ⴈ',
880
- 'ⴉ' => 'Ⴉ',
881
- 'ⴊ' => 'Ⴊ',
882
- 'ⴋ' => 'Ⴋ',
883
- 'ⴌ' => 'Ⴌ',
884
- 'ⴍ' => 'Ⴍ',
885
- 'ⴎ' => 'Ⴎ',
886
- 'ⴏ' => 'Ⴏ',
887
- 'ⴐ' => 'Ⴐ',
888
- 'ⴑ' => 'Ⴑ',
889
- 'ⴒ' => 'Ⴒ',
890
- 'ⴓ' => 'Ⴓ',
891
- 'ⴔ' => 'Ⴔ',
892
- 'ⴕ' => 'Ⴕ',
893
- 'ⴖ' => 'Ⴖ',
894
- 'ⴗ' => 'Ⴗ',
895
- 'ⴘ' => 'Ⴘ',
896
- 'ⴙ' => 'Ⴙ',
897
- 'ⴚ' => 'Ⴚ',
898
- 'ⴛ' => 'Ⴛ',
899
- 'ⴜ' => 'Ⴜ',
900
- 'ⴝ' => 'Ⴝ',
901
- 'ⴞ' => 'Ⴞ',
902
- 'ⴟ' => 'Ⴟ',
903
- 'ⴠ' => 'Ⴠ',
904
- 'ⴡ' => 'Ⴡ',
905
- 'ⴢ' => 'Ⴢ',
906
- 'ⴣ' => 'Ⴣ',
907
- 'ⴤ' => 'Ⴤ',
908
- 'ⴥ' => 'Ⴥ',
909
- 'ⴧ' => 'Ⴧ',
910
- 'ⴭ' => 'Ⴭ',
911
- 'ꙁ' => 'Ꙁ',
912
- 'ꙃ' => 'Ꙃ',
913
- 'ꙅ' => 'Ꙅ',
914
- 'ꙇ' => 'Ꙇ',
915
- 'ꙉ' => 'Ꙉ',
916
- 'ꙋ' => 'Ꙋ',
917
- 'ꙍ' => 'Ꙍ',
918
- 'ꙏ' => 'Ꙏ',
919
- 'ꙑ' => 'Ꙑ',
920
- 'ꙓ' => 'Ꙓ',
921
- 'ꙕ' => 'Ꙕ',
922
- 'ꙗ' => 'Ꙗ',
923
- 'ꙙ' => 'Ꙙ',
924
- 'ꙛ' => 'Ꙛ',
925
- 'ꙝ' => 'Ꙝ',
926
- 'ꙟ' => 'Ꙟ',
927
- 'ꙡ' => 'Ꙡ',
928
- 'ꙣ' => 'Ꙣ',
929
- 'ꙥ' => 'Ꙥ',
930
- 'ꙧ' => 'Ꙧ',
931
- 'ꙩ' => 'Ꙩ',
932
- 'ꙫ' => 'Ꙫ',
933
- 'ꙭ' => 'Ꙭ',
934
- 'ꚁ' => 'Ꚁ',
935
- 'ꚃ' => 'Ꚃ',
936
- 'ꚅ' => 'Ꚅ',
937
- 'ꚇ' => 'Ꚇ',
938
- 'ꚉ' => 'Ꚉ',
939
- 'ꚋ' => 'Ꚋ',
940
- 'ꚍ' => 'Ꚍ',
941
- 'ꚏ' => 'Ꚏ',
942
- 'ꚑ' => 'Ꚑ',
943
- 'ꚓ' => 'Ꚓ',
944
- 'ꚕ' => 'Ꚕ',
945
- 'ꚗ' => 'Ꚗ',
946
- 'ꚙ' => 'Ꚙ',
947
- 'ꚛ' => 'Ꚛ',
948
- 'ꜣ' => 'Ꜣ',
949
- 'ꜥ' => 'Ꜥ',
950
- 'ꜧ' => 'Ꜧ',
951
- 'ꜩ' => 'Ꜩ',
952
- 'ꜫ' => 'Ꜫ',
953
- 'ꜭ' => 'Ꜭ',
954
- 'ꜯ' => 'Ꜯ',
955
- 'ꜳ' => 'Ꜳ',
956
- 'ꜵ' => 'Ꜵ',
957
- 'ꜷ' => 'Ꜷ',
958
- 'ꜹ' => 'Ꜹ',
959
- 'ꜻ' => 'Ꜻ',
960
- 'ꜽ' => 'Ꜽ',
961
- 'ꜿ' => 'Ꜿ',
962
- 'ꝁ' => 'Ꝁ',
963
- 'ꝃ' => 'Ꝃ',
964
- 'ꝅ' => 'Ꝅ',
965
- 'ꝇ' => 'Ꝇ',
966
- 'ꝉ' => 'Ꝉ',
967
- 'ꝋ' => 'Ꝋ',
968
- 'ꝍ' => 'Ꝍ',
969
- 'ꝏ' => 'Ꝏ',
970
- 'ꝑ' => 'Ꝑ',
971
- 'ꝓ' => 'Ꝓ',
972
- 'ꝕ' => 'Ꝕ',
973
- 'ꝗ' => 'Ꝗ',
974
- 'ꝙ' => 'Ꝙ',
975
- 'ꝛ' => 'Ꝛ',
976
- 'ꝝ' => 'Ꝝ',
977
- 'ꝟ' => 'Ꝟ',
978
- 'ꝡ' => 'Ꝡ',
979
- 'ꝣ' => 'Ꝣ',
980
- 'ꝥ' => 'Ꝥ',
981
- 'ꝧ' => 'Ꝧ',
982
- 'ꝩ' => 'Ꝩ',
983
- 'ꝫ' => 'Ꝫ',
984
- 'ꝭ' => 'Ꝭ',
985
- 'ꝯ' => 'Ꝯ',
986
- 'ꝺ' => 'Ꝺ',
987
- 'ꝼ' => 'Ꝼ',
988
- 'ꝿ' => 'Ꝿ',
989
- 'ꞁ' => 'Ꞁ',
990
- 'ꞃ' => 'Ꞃ',
991
- 'ꞅ' => 'Ꞅ',
992
- 'ꞇ' => 'Ꞇ',
993
- 'ꞌ' => 'Ꞌ',
994
- 'ꞑ' => 'Ꞑ',
995
- 'ꞓ' => 'Ꞓ',
996
- 'ꞗ' => 'Ꞗ',
997
- 'ꞙ' => 'Ꞙ',
998
- 'ꞛ' => 'Ꞛ',
999
- 'ꞝ' => 'Ꞝ',
1000
- 'ꞟ' => 'Ꞟ',
1001
- 'ꞡ' => 'Ꞡ',
1002
- 'ꞣ' => 'Ꞣ',
1003
- 'ꞥ' => 'Ꞥ',
1004
- 'ꞧ' => 'Ꞧ',
1005
- 'ꞩ' => 'Ꞩ',
1006
- 'a' => 'A',
1007
- 'b' => 'B',
1008
- 'c' => 'C',
1009
- 'd' => 'D',
1010
- 'e' => 'E',
1011
- 'f' => 'F',
1012
- 'g' => 'G',
1013
- 'h' => 'H',
1014
- 'i' => 'I',
1015
- 'j' => 'J',
1016
- 'k' => 'K',
1017
- 'l' => 'L',
1018
- 'm' => 'M',
1019
- 'n' => 'N',
1020
- 'o' => 'O',
1021
- 'p' => 'P',
1022
- 'q' => 'Q',
1023
- 'r' => 'R',
1024
- 's' => 'S',
1025
- 't' => 'T',
1026
- 'u' => 'U',
1027
- 'v' => 'V',
1028
- 'w' => 'W',
1029
- 'x' => 'X',
1030
- 'y' => 'Y',
1031
- 'z' => 'Z',
1032
- '𐐨' => '𐐀',
1033
- '𐐩' => '𐐁',
1034
- '𐐪' => '𐐂',
1035
- '𐐫' => '𐐃',
1036
- '𐐬' => '𐐄',
1037
- '𐐭' => '𐐅',
1038
- '𐐮' => '𐐆',
1039
- '𐐯' => '𐐇',
1040
- '𐐰' => '𐐈',
1041
- '𐐱' => '𐐉',
1042
- '𐐲' => '𐐊',
1043
- '𐐳' => '𐐋',
1044
- '𐐴' => '𐐌',
1045
- '𐐵' => '𐐍',
1046
- '𐐶' => '𐐎',
1047
- '𐐷' => '𐐏',
1048
- '𐐸' => '𐐐',
1049
- '𐐹' => '𐐑',
1050
- '𐐺' => '𐐒',
1051
- '𐐻' => '𐐓',
1052
- '𐐼' => '𐐔',
1053
- '𐐽' => '𐐕',
1054
- '𐐾' => '𐐖',
1055
- '𐐿' => '𐐗',
1056
- '𐑀' => '𐐘',
1057
- '𐑁' => '𐐙',
1058
- '𐑂' => '𐐚',
1059
- '𐑃' => '𐐛',
1060
- '𐑄' => '𐐜',
1061
- '𐑅' => '𐐝',
1062
- '𐑆' => '𐐞',
1063
- '𐑇' => '𐐟',
1064
- '𐑈' => '𐐠',
1065
- '𐑉' => '𐐡',
1066
- '𐑊' => '𐐢',
1067
- '𐑋' => '𐐣',
1068
- '𐑌' => '𐐤',
1069
- '𐑍' => '𐐥',
1070
- '𐑎' => '𐐦',
1071
- '𐑏' => '𐐧',
1072
- '𑣀' => '𑢠',
1073
- '𑣁' => '𑢡',
1074
- '𑣂' => '𑢢',
1075
- '𑣃' => '𑢣',
1076
- '𑣄' => '𑢤',
1077
- '𑣅' => '𑢥',
1078
- '𑣆' => '𑢦',
1079
- '𑣇' => '𑢧',
1080
- '𑣈' => '𑢨',
1081
- '𑣉' => '𑢩',
1082
- '𑣊' => '𑢪',
1083
- '𑣋' => '𑢫',
1084
- '𑣌' => '𑢬',
1085
- '𑣍' => '𑢭',
1086
- '𑣎' => '𑢮',
1087
- '𑣏' => '𑢯',
1088
- '𑣐' => '𑢰',
1089
- '𑣑' => '𑢱',
1090
- '𑣒' => '𑢲',
1091
- '𑣓' => '𑢳',
1092
- '𑣔' => '𑢴',
1093
- '𑣕' => '𑢵',
1094
- '𑣖' => '𑢶',
1095
- '𑣗' => '𑢷',
1096
- '𑣘' => '𑢸',
1097
- '𑣙' => '𑢹',
1098
- '𑣚' => '𑢺',
1099
- '𑣛' => '𑢻',
1100
- '𑣜' => '𑢼',
1101
- '𑣝' => '𑢽',
1102
- '𑣞' => '𑢾',
1103
- '𑣟' => '𑢿',
1104
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-mbstring/bootstrap.php DELETED
@@ -1,64 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- use Symfony\Polyfill\Mbstring as p;
13
-
14
- if (!defined('MB_CASE_UPPER')) {
15
- define('MB_CASE_UPPER', 0);
16
- define('MB_CASE_LOWER', 1);
17
- define('MB_CASE_TITLE', 2);
18
- }
19
-
20
- if (!function_exists('mb_strlen')) {
21
- function mb_convert_encoding($s, $to, $from = null) { return p\Mbstring::mb_convert_encoding($s, $to, $from); }
22
- function mb_decode_mimeheader($s) { return p\Mbstring::mb_decode_mimeheader($s); }
23
- function mb_encode_mimeheader($s, $charset = null, $transferEnc = null, $lf = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($s, $charset, $transferEnc, $lf, $indent); }
24
- function mb_decode_numericentity($s, $convmap, $enc = null) { return p\Mbstring::mb_decode_numericentity($s, $convmap, $enc); }
25
- function mb_encode_numericentity($s, $convmap, $enc = null, $is_hex = false) { return p\Mbstring::mb_encode_numericentity($s, $convmap, $enc, $is_hex); }
26
- function mb_convert_case($s, $mode, $enc = null) { return p\Mbstring::mb_convert_case($s, $mode, $enc); }
27
- function mb_internal_encoding($enc = null) { return p\Mbstring::mb_internal_encoding($enc); }
28
- function mb_language($lang = null) { return p\Mbstring::mb_language($lang); }
29
- function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
30
- function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
31
- function mb_check_encoding($var = null, $encoding = null) { return p\Mbstring::mb_check_encoding($var, $encoding); }
32
- function mb_detect_encoding($str, $encodingList = null, $strict = false) { return p\Mbstring::mb_detect_encoding($str, $encodingList, $strict); }
33
- function mb_detect_order($encodingList = null) { return p\Mbstring::mb_detect_order($encodingList); }
34
- function mb_parse_str($s, &$result = array()) { parse_str($s, $result); }
35
- function mb_strlen($s, $enc = null) { return p\Mbstring::mb_strlen($s, $enc); }
36
- function mb_strpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strpos($s, $needle, $offset, $enc); }
37
- function mb_strtolower($s, $enc = null) { return p\Mbstring::mb_strtolower($s, $enc); }
38
- function mb_strtoupper($s, $enc = null) { return p\Mbstring::mb_strtoupper($s, $enc); }
39
- function mb_substitute_character($char = null) { return p\Mbstring::mb_substitute_character($char); }
40
- function mb_substr($s, $start, $length = 2147483647, $enc = null) { return p\Mbstring::mb_substr($s, $start, $length, $enc); }
41
- function mb_stripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_stripos($s, $needle, $offset, $enc); }
42
- function mb_stristr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_stristr($s, $needle, $part, $enc); }
43
- function mb_strrchr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrchr($s, $needle, $part, $enc); }
44
- function mb_strrichr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strrichr($s, $needle, $part, $enc); }
45
- function mb_strripos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strripos($s, $needle, $offset, $enc); }
46
- function mb_strrpos($s, $needle, $offset = 0, $enc = null) { return p\Mbstring::mb_strrpos($s, $needle, $offset, $enc); }
47
- function mb_strstr($s, $needle, $part = false, $enc = null) { return p\Mbstring::mb_strstr($s, $needle, $part, $enc); }
48
- function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
49
- function mb_http_output($enc = null) { return p\Mbstring::mb_http_output($enc); }
50
- function mb_strwidth($s, $enc = null) { return p\Mbstring::mb_strwidth($s, $enc); }
51
- function mb_substr_count($haystack, $needle, $enc = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $enc); }
52
- function mb_output_handler($contents, $status) { return p\Mbstring::mb_output_handler($contents, $status); }
53
- function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); }
54
- function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $a, $b, $c, $d, $e, $f); }
55
- }
56
- if (!function_exists('mb_chr')) {
57
- function mb_ord($s, $enc = null) { return p\Mbstring::mb_ord($s, $enc); }
58
- function mb_chr($code, $enc = null) { return p\Mbstring::mb_chr($code, $enc); }
59
- function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
60
- }
61
-
62
- if (!function_exists('mb_str_split')) {
63
- function mb_str_split($string, $split_length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $split_length, $encoding); }
64
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-php72/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2015-2019 Fabien Potencier
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is furnished
8
- to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-php72/Php72.php DELETED
@@ -1,216 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- namespace Symfony\Polyfill\Php72;
13
-
14
- /**
15
- * @author Nicolas Grekas <p@tchwork.com>
16
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
17
- *
18
- * @internal
19
- */
20
- final class Php72
21
- {
22
- private static $hashMask;
23
-
24
- public static function utf8_encode($s)
25
- {
26
- $s .= $s;
27
- $len = \strlen($s);
28
-
29
- for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) {
30
- switch (true) {
31
- case $s[$i] < "\x80": $s[$j] = $s[$i]; break;
32
- case $s[$i] < "\xC0": $s[$j] = "\xC2"; $s[++$j] = $s[$i]; break;
33
- default: $s[$j] = "\xC3"; $s[++$j] = \chr(\ord($s[$i]) - 64); break;
34
- }
35
- }
36
-
37
- return substr($s, 0, $j);
38
- }
39
-
40
- public static function utf8_decode($s)
41
- {
42
- $s = (string) $s;
43
- $len = \strlen($s);
44
-
45
- for ($i = 0, $j = 0; $i < $len; ++$i, ++$j) {
46
- switch ($s[$i] & "\xF0") {
47
- case "\xC0":
48
- case "\xD0":
49
- $c = (\ord($s[$i] & "\x1F") << 6) | \ord($s[++$i] & "\x3F");
50
- $s[$j] = $c < 256 ? \chr($c) : '?';
51
- break;
52
-
53
- case "\xF0":
54
- ++$i;
55
- // no break
56
-
57
- case "\xE0":
58
- $s[$j] = '?';
59
- $i += 2;
60
- break;
61
-
62
- default:
63
- $s[$j] = $s[$i];
64
- }
65
- }
66
-
67
- return substr($s, 0, $j);
68
- }
69
-
70
- public static function php_os_family()
71
- {
72
- if ('\\' === \DIRECTORY_SEPARATOR) {
73
- return 'Windows';
74
- }
75
-
76
- $map = array(
77
- 'Darwin' => 'Darwin',
78
- 'DragonFly' => 'BSD',
79
- 'FreeBSD' => 'BSD',
80
- 'NetBSD' => 'BSD',
81
- 'OpenBSD' => 'BSD',
82
- 'Linux' => 'Linux',
83
- 'SunOS' => 'Solaris',
84
- );
85
-
86
- return isset($map[PHP_OS]) ? $map[PHP_OS] : 'Unknown';
87
- }
88
-
89
- public static function spl_object_id($object)
90
- {
91
- if (null === self::$hashMask) {
92
- self::initHashMask();
93
- }
94
- if (null === $hash = spl_object_hash($object)) {
95
- return;
96
- }
97
-
98
- return self::$hashMask ^ hexdec(substr($hash, 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
99
- }
100
-
101
- public static function sapi_windows_vt100_support($stream, $enable = null)
102
- {
103
- if (!\is_resource($stream)) {
104
- trigger_error('sapi_windows_vt100_support() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
105
-
106
- return false;
107
- }
108
-
109
- $meta = stream_get_meta_data($stream);
110
-
111
- if ('STDIO' !== $meta['stream_type']) {
112
- trigger_error('sapi_windows_vt100_support() was not able to analyze the specified stream', E_USER_WARNING);
113
-
114
- return false;
115
- }
116
-
117
- // We cannot actually disable vt100 support if it is set
118
- if (false === $enable || !self::stream_isatty($stream)) {
119
- return false;
120
- }
121
-
122
- // The native function does not apply to stdin
123
- $meta = array_map('strtolower', $meta);
124
- $stdin = 'php://stdin' === $meta['uri'] || 'php://fd/0' === $meta['uri'];
125
-
126
- return !$stdin
127
- && (false !== getenv('ANSICON')
128
- || 'ON' === getenv('ConEmuANSI')
129
- || 'xterm' === getenv('TERM')
130
- || 'Hyper' === getenv('TERM_PROGRAM'));
131
- }
132
-
133
- public static function stream_isatty($stream)
134
- {
135
- if (!\is_resource($stream)) {
136
- trigger_error('stream_isatty() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING);
137
-
138
- return false;
139
- }
140
-
141
- if ('\\' === \DIRECTORY_SEPARATOR) {
142
- $stat = @fstat($stream);
143
- // Check if formatted mode is S_IFCHR
144
- return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
145
- }
146
-
147
- return \function_exists('posix_isatty') && @posix_isatty($stream);
148
- }
149
-
150
- private static function initHashMask()
151
- {
152
- $obj = (object) array();
153
- self::$hashMask = -1;
154
-
155
- // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below
156
- $obFuncs = array('ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush');
157
- foreach (debug_backtrace(\PHP_VERSION_ID >= 50400 ? DEBUG_BACKTRACE_IGNORE_ARGS : false) as $frame) {
158
- if (isset($frame['function'][0]) && !isset($frame['class']) && 'o' === $frame['function'][0] && \in_array($frame['function'], $obFuncs)) {
159
- $frame['line'] = 0;
160
- break;
161
- }
162
- }
163
- if (!empty($frame['line'])) {
164
- ob_start();
165
- debug_zval_dump($obj);
166
- self::$hashMask = (int) substr(ob_get_clean(), 17);
167
- }
168
-
169
- self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - \PHP_INT_SIZE, \PHP_INT_SIZE));
170
- }
171
-
172
- public static function mb_chr($code, $encoding = null)
173
- {
174
- if (0x80 > $code %= 0x200000) {
175
- $s = \chr($code);
176
- } elseif (0x800 > $code) {
177
- $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
178
- } elseif (0x10000 > $code) {
179
- $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
180
- } else {
181
- $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
182
- }
183
-
184
- if ('UTF-8' !== $encoding) {
185
- $s = mb_convert_encoding($s, $encoding, 'UTF-8');
186
- }
187
-
188
- return $s;
189
- }
190
-
191
- public static function mb_ord($s, $encoding = null)
192
- {
193
- if (null == $encoding) {
194
- $s = mb_convert_encoding($s, 'UTF-8');
195
- } elseif ('UTF-8' !== $encoding) {
196
- $s = mb_convert_encoding($s, 'UTF-8', $encoding);
197
- }
198
-
199
- if (1 === \strlen($s)) {
200
- return \ord($s);
201
- }
202
-
203
- $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
204
- if (0xF0 <= $code) {
205
- return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
206
- }
207
- if (0xE0 <= $code) {
208
- return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
209
- }
210
- if (0xC0 <= $code) {
211
- return (($code - 0xC0) << 6) + $s[2] - 0x80;
212
- }
213
-
214
- return $code;
215
- }
216
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-php72/bootstrap.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- use Symfony\Polyfill\Php72 as p;
13
-
14
- if (PHP_VERSION_ID < 70200) {
15
- if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
16
- function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
17
- }
18
- if (!function_exists('stream_isatty')) {
19
- function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
20
- }
21
- if (!function_exists('utf8_encode')) {
22
- function utf8_encode($s) { return p\Php72::utf8_encode($s); }
23
- function utf8_decode($s) { return p\Php72::utf8_decode($s); }
24
- }
25
- if (!function_exists('spl_object_id')) {
26
- function spl_object_id($s) { return p\Php72::spl_object_id($s); }
27
- }
28
- if (!defined('PHP_OS_FAMILY')) {
29
- define('PHP_OS_FAMILY', p\Php72::php_os_family());
30
- }
31
- if (!function_exists('mb_chr')) {
32
- function mb_ord($s, $enc = null) { return p\Php72::mb_ord($s, $enc); }
33
- function mb_chr($code, $enc = null) { return p\Php72::mb_chr($code, $enc); }
34
- function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); }
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
wp_mail_smtp.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Plugin Name: WP Mail SMTP
4
- * Version: 2.0.0
5
  * Plugin URI: https://wpmailsmtp.com/
6
  * Description: Reconfigures the <code>wp_mail()</code> function to use Gmail/Mailgun/SendGrid/SMTP instead of the default <code>mail()</code> and creates an options page to manage the settings.
7
  * Author: WPForms
@@ -203,7 +203,7 @@ if ( ! function_exists( 'wp_mail_smtp_insecure_php_version_notice' ) ) {
203
  }
204
 
205
  if ( ! defined( 'WPMS_PLUGIN_VER' ) ) {
206
- define( 'WPMS_PLUGIN_VER', '2.0.0' );
207
  }
208
  if ( ! defined( 'WPMS_PHP_VER' ) ) {
209
  define( 'WPMS_PHP_VER', '5.5.0' );
1
  <?php
2
  /**
3
  * Plugin Name: WP Mail SMTP
4
+ * Version: 2.0.1
5
  * Plugin URI: https://wpmailsmtp.com/
6
  * Description: Reconfigures the <code>wp_mail()</code> function to use Gmail/Mailgun/SendGrid/SMTP instead of the default <code>mail()</code> and creates an options page to manage the settings.
7
  * Author: WPForms
203
  }
204
 
205
  if ( ! defined( 'WPMS_PLUGIN_VER' ) ) {
206
+ define( 'WPMS_PLUGIN_VER', '2.0.1' );
207
  }
208
  if ( ! defined( 'WPMS_PHP_VER' ) ) {
209
  define( 'WPMS_PHP_VER', '5.5.0' );